为没有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循环的数据表中的所有行设置值的主要内容,如果未能解决你的问题,请参考以下文章

在R中没有for循环的行之间移动值

如何使用 d.items() 更改 for 循环中的所有字典键?

Python for循环遍历一列的所有行

操作列表

将布尔数组中的所有值设置为 true

Java,类中的 For 循环