在不使用循环的情况下更新C#中的DataTable?
让假设有三列在我的DataTable在不使用循环的情况下更新C#中的DataTable?
代码
名
颜色
如果我知道的代码和名称,我该怎么更新该代码和名称符合我的标准的特定行的颜色?我想在不使用循环的情况下做到这一点!
你可以使用LINQ:
DataRow dr = datatable.AsEnumerable().Where(r => ((string)r["code"]).Equals(someCode) && ((string)r["name"]).Equals(someName)).First();
dr["color"] = someColor;
当然,我假设所有这些标准都是字符串。您应该将演员改为正确的类型。
现在我在Data.EnumerableRowCollection不包含.First()我们只是更新行如何将在DataTable中反映出这些变化 – 2011-05-21 11:09:58
确保你在使用System.Linq,但是如果没有被引用,那么Where()不应该工作。“反映变化”你是指看到他们在屏幕上?你需要重新绑定DataTable到任何你用来显示它 – Farinha 2011-05-21 11:33:35
// 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;
}
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);
这仍然是一个循环 – 2017-02-01 15:58:11
为什么在这个世界上你不想使用循环来做到这一点? *某处*,需要循环。即使你使用LINQ,循环仍然在内部执行。 – 2011-05-21 14:44:58
科迪,OP想更新1排。字典不需要循环。 – 2011-05-21 20:20:54
表格不是字典 – 2012-12-19 22:49:20