2016-04-04 50 views
0

刪除特定值我想從data table刪除特定值,不喜歡特定行或列,假設我有數據表如下圖所示如何從數據表中的.NET

====================================================== 
| firstname |  lastname |  age | location | 
====================================================== 
| Jhonson | charles |  32 | dever  | 
| Jaques  | kallis  |  33 | cevek  | 
| rama  | kalyani |  23 | qwet  | 
| sasi  | kiran  |  22 | delli  | 
====================================================== 

和我有文件名爲age.txt其中包含值23,26,27.So如果三個值中的任何一個來自數據表列age,只需清除該值,不清除特定的行或列。如何實現這一目標?

+0

那些年齡值都在單行逗號分隔或者是在單獨的行? – Steve

回答

2

我假設你的文件包含在單個文本行中的所有年齡和你的年齡字段是整型

DataTable dt = LoadYourTable(); 
string agesData = File.ReadAllText("age.txt"); 

// Create an array of the ages integer loaded from your file 
int[] ages = agesData.Split(',').Select(x => Convert.ToInt32(x)).ToArray(); 

// Loop over the rows collection 
foreach(DataRow r in dt.Rows) 
{ 
    // If the ages array contains the Age value of the current row 
    if(ages.Contains(r.Field<int>("Age"))) 
     r.SetField<int>("Age", 0); // Or set it to DBNull.Value 
} 
0

請參閱this答案。然後只需檢查插入的值並根據需要進行更改。

1

您可以迭代數據表中的行並將該值設置爲null。

// Split the text values into an array of strings 
string[] checkAgeArray = "23,26,27".Split(','); 

DataTable person; 

foreach (var row in person.Rows) 
{ 
    // Compare the string ages to the string value of the integer age in table 
    if (checkAgeArray.Contains(row["age"].ToString())) 
     row["age"] = System.DBNull; 
} 
+0

錯誤獲取「不能應用indexint與[]表達式類型的對象」爲什麼? – peter

相關問題