为没有for循环的数据表中的所有行设置值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为没有for循环的数据表中的所有行设置值相关的知识,希望对你有一定的参考价值。
我正在尝试为数据表中的单个列设置所有行的相同值,而不使用for循环。任何人都可以建议任何更快的方法来实现相同。
答案
除非你算foreach
。无论如何,你需要循环。
如果你使用DataTable
版本,最快的方法是使用DataColumn
访问器,即
var col = table.Columns["Foo"];
foreach(var row in table.Rows)
row[col] = value;
作为替代方案:因为这可能与数据库有关,所以手动编写TSQL以适当地设置所有值(即在TSQL中使用合适的where
子句)。
update [theTable]
set [theColumn] = theValue
where --TODO - something sensible
另一答案
是的,这是可能的,即使没有循环!这可以使用Expression
属性来完成。请记住,应该引用字符串值,否则它会将其视为另一个columnname.1
这将使用字符串值a
设置列'col1':
preview.Columns["col1"].Expression = "'a'";
这将在'col1'中显示'col2'列的值:
preview.Columns["col1"].Expression = "col2";
另一答案
您是否考虑过删除并重新添加具有默认值的列?
dt.Columns.Remove("FilterText")
dt.Columns.Add(New DataColumn() With {.ColumnName = "FilterText",
.DataType = GetType(String),
.DefaultValue = "Jam and chips"})
(假设您的列名是FilterText,并且您想将其设置为“Jam and chips”)
另一答案
我遇到了这种类型的问题,其中选择全部复选框用于将列“sel”设置为1或0,foreach循环非常慢,我从@Jonathan回答这个想法更快,但有一些由于With子句在c#中不起作用的微小修改
dtEmpList.Columns.Remove("sel");
dtEmpList.Columns.Add(new DataColumn("sel",typeof(bool)(chkSelectAll.Checked ? "1" : "0")));
以上是关于为没有for循环的数据表中的所有行设置值的主要内容,如果未能解决你的问题,请参考以下文章