0

I want to remove a particular value from data table ,not like particular row or column,Suppose i have data table as shown below

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

and i have file named age.txt which contains values 23,26,27.So if any of the three values coming in datatable column age,just clear that value, not clear particular row or column.How can i achieve this?

rashfmnb
  • 9,959
  • 4
  • 33
  • 44
peter
  • 8,158
  • 21
  • 66
  • 119

3 Answers3

2

I am assuming that your file contains all the ages in a single line of text and your Age field is of integer type

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
}
Steve
  • 213,761
  • 22
  • 232
  • 286
1

You can iterate over the rows in the datatable and set the value to 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

See this answer. Then simply check the value being inserted and change as necessary.

Community
  • 1
  • 1
Barry O'Kane
  • 1,189
  • 7
  • 12