LINQ to dataset:CopyToDataTable()

时间:2010-01-14 11:44:28

标签: linq

我想查询数据表(dt)并使用生成的数据行集合加载第二个dt。好的 - 我们有CopyToDataTable()extn mthd用于此目的。但是,它仅限于枚举DataRows,这意味着我无法返回任何其他内容,例如匿名类型的集合。 那么 - 如何修改数据行中的值?

例如,我有一个包含3列的dt:MyPK,VARCHAR01,VARCHAR02。

Foreach行,如果VARCHAR01或VARCHAR02的值为“”(即String.Empty)我想用NULL替换它(基础类型允许)。

我会这样做:

var MyCleanedDatarows =
      from o in ds.Tables["dt"].AsEnumerable()
      select new {
            MyPK = o.Field<string>("MyPK"),
            VARCHAR01 = (o.Field<string?>("VARCHAR01") == "" ? NULL : o.Field<string?>("VARCHAR01") ),
             VARCHAR02 = (o.Field<string?>("VARCHAR02") == "" ? NULL : o.Field<string?>("VARCHAR02") )
           };

...但是我不能使用CopyToDataTable()来返回dt。我想我需要在调用select运算符之前修改数据行,但我不知道如何实现它。任何帮助/想法都会得到很好的回复。

提前致谢,

塔米姆。

1 个答案:

答案 0 :(得分:0)

在MSDN文档中查看此方法。 http://msdn.microsoft.com/en-us/library/bb669096.aspx