使用LINQ从DataSet中选择Rows,其中RowsID列表位于List <T>中

GTu*_*tto 6 .net linq dictionary list dataset

首先我要说的是,我是一个使用LINQ的新手.实际上我以前从未使用过,但我正在完成一项任务,我需要使用来自List的值来过滤DataTable.所以我想知道在LINQ中是否可以使用List中的值作为过滤器值来查询数据表.有人可以给我一些提示

谢谢.

Mar*_*gow 7

执行此操作的最佳方法取决于您计划对过滤结果执行的操作.您是否需要将结果作为DataTable进行进一步操作,还是将数据绑定到结果?

以下面的示例为例,它返回匹配DataRows的(可绑定)枚举器

//create sample table with sample rows
DataTable table = new DataTable();

table.Columns.Add("id", typeof(int));

for (int i = 1; i < 11; i++)
{
    DataRow row = table.NewRow();
    row[0] = i;
    table.Rows.Add(row);
}

//filter the table by id (in a list)
List<int> rowIds = new List<int> { 1, 3, 6 };

IEnumerable<DataRow> matchingRows = from DataRow row in table.Rows
                   where rowIds.Contains((int)row[0])
                   select row;
Run Code Online (Sandbox Code Playgroud)

如果需要DataTable,可以将行导入另一个表:

DataTable filteredTable = table.Clone();

foreach (DataRow filteredRow in matchingRows)
{
    filteredTable.ImportRow(filteredRow);
}
Run Code Online (Sandbox Code Playgroud)