LINQ到数据集:CopyToDataTable()

LINQ到数据集:CopyToDataTable(),linq,Linq,我想查询一个datatable(dt)并加载第二个dt和数据行的结果集合。很好-我们有CopyToDataTable()extn mthd就是为了这个目的。但是,它被限制为仅枚举DataRows,这意味着我不能返回任何其他内容,例如匿名类型的集合So-如何修改数据行中的值? 例如,我有一个带有3列的dt:MyPK、VARCHAR01、VARCHAR02 对于每一行,如果VARCHAR01或VARCHAR02的值为“”(即String.Empty),我希望将其替换为NULL(基础类型允许) 我会这

我想查询一个datatable(dt)并加载第二个dt和数据行的结果集合。很好-我们有CopyToDataTable()extn mthd就是为了这个目的。但是,它被限制为仅枚举DataRows,这意味着我不能返回任何其他内容,例如匿名类型的集合So-如何修改数据行中的值?

例如,我有一个带有3列的dt:MyPK、VARCHAR01、VARCHAR02

对于每一行,如果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") )
           };
var MyCleanedDatarows=
从ds.表中的o开始[“dt”].AsEnumerable()
选择新的{
MyPK=o.字段(“MyPK”),
VARCHAR01=(o.Field(“VARCHAR01”)==“”?NULL:o.Field(“VARCHAR01”),
VARCHAR02=(o.Field(“VARCHAR02”)==“”?NULL:o.Field(“VARCHAR02”))
};
…但是我不能使用CopyToDataTable()返回到dt。我想我需要在调用select操作符之前修改datarows,但我不知道如何实现这一点。任何帮助/想法都将受到极大的感谢

提前感谢,


Tamim.

请在MSDN文档中查看此方法。