C# 将 System.Data.EnumerableRowCollection<System.Data.DataRow> 转换为 DataTable

Jay*_*ena 1 c# ienumerable

我有一个使用 Linq 过滤的数据表:

result = myDataTable.AsEnumerable().Where(row => row.Field<string>("id").Contains(values));
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用CopyToDataTable类似的方法

result.CopyToDataTable()
Run Code Online (Sandbox Code Playgroud)

result.CopyToDataTable<DataRow>()
Run Code Online (Sandbox Code Playgroud)

但他们没有工作。如何转换result为新的数据表?我搜索了许多 Stack Overflow 问题和许多其他教程,但找不到我想要的。

更新

我已将 HashSet 连接到逗号分隔值,我想我应该使用 String 数组还是 HashSet?

Pra*_*ana 5

我建议您通过调用 function 创建对象DataTable并在其中导入行ImportRow(),这将解决问题。

DataTable.ImportRow 方法

示例代码。

DataTable tblClone = datTab.Clone();
foreach (DataRow datRow in datTab.Rows) 
{

        tblClone.ImportRow(datRow);
}
Run Code Online (Sandbox Code Playgroud)

对你来说就像

var result = myDataTable.AsEnumerable().Where(row => row.Field<string>("id").Contains(values));
DataTable tblClone = myDataTable.Clone();
foreach(DataRow dr in result)
  tblClone.ImportRow(dr);
Run Code Online (Sandbox Code Playgroud)