0

我有一个过滤器的 DataView

inputView.RowFilter = "isnull(" + ID1 + ",'')<>'' and isnull(" + reason + ",0)=0";

在这个过滤器之后,我必须将“ IsVerified”列 更新inputView为“1”

LINQ 中是否有执行以下操作的内容?

inputView.RowFilter.ForEach(x=>x.Field<IsVerified> =1);
4

1 回答 1

1

如果要在 DataView 上使用 LINQ,则必须在 DataView 上创建自己的扩展方法。DataView 本身没有 . ToList()方法,这是 . ForEach()被定义为。

为 DataView 创建扩展方法。

public static class DataViewExtensions
{
    public static List<DataRowView> ToList(this DataView v)
    {
        List<DataRowView> foo = new List<DataRowView>();

        for (int i = 0; i < v.Count; i++)
        {
            foo.Add(v[i]);
        }
        return foo;
    }

}

您的 DataView 现在可以这样称呼:

inputView.ToList().ForEach(x=>x["IsVerified"]=1);

一些开发人员可能更喜欢完整的 .NETforeach (var x in y)语句,但这也是一样的。

完整的控制台应用程序概念验证:http: //pastebin.com/y9z5n6VH

于 2010-07-18T18:19:43.673 回答