在不使用循环的情况下在C#中更新DataTable?

时间:2011-05-21 10:36:56

标签: c# .net datatable

假设我的DataTable中有三列

  1. 名称

  2. 颜色

  3. 如果我知道代码和名称,如何更新代码和名称与我的条件匹配的特定行的颜色?我想这样做而不使用循环!

5 个答案:

答案 0 :(得分:14)

您可以使用LINQ:

DataRow dr = datatable.AsEnumerable().Where(r => ((string)r["code"]).Equals(someCode) && ((string)r["name"]).Equals(someName)).First();
dr["color"] = someColor;

当然我假设所有这些标准都是字符串。您应该将演员表更改为正确的类型。

答案 1 :(得分:12)

// Use the Select method to find all rows matching the name and code.
DataRow[] rows = myDataTable.Select("name 'nameValue' AND code = 'codeValue');

for(int i = 0; i < rows.Length; i ++)
{
      rows[i]["color"] = colorValue;
}

答案 2 :(得分:5)

DataTable recTable = new DataTable();

// do stuff to populate table

recTable.Select(string.Format("[code] = '{0}' and [name] = '{1}'", someCode, someName)).ToList<DataRow>().ForEach(r => r["Color"] = colorValue);

答案 3 :(得分:0)

使用LINQ:

var dataRows = dt.AsEnumerable().Select(c => { c["color"] = c["Code"].ToString() == "1" ? "Red" : "White"; return c; });
dt = dataRows.CopyToDataTable();

答案 4 :(得分:-2)

你可以这样做:

 foreach (DataRow row in datatable.Rows)
        {
            if(row["code"].ToString() == someCode && row["name"].ToString() == someName)

              {
                  row["color"] = someColor;
              }


        }