坚持使用数据表和过滤的Linq查询

本文关键字:Linq 查询 过滤 数据表 坚持 | 更新日期: 2023-09-27 18:15:14

我需要一些帮助与linq查询。

基本上,我有一个数据表,其中一些列被枚举为数据表。我需要得到与字符串[][]匹配的所有行。在下面的例子。

string[0][0] = ColumnHeader1
string[0][1] = Hello
string[1][0] = ColumnHeader2
string[1][1] = World

因此,我需要返回包含"Hello"的ColumnHeader1和包含"WORLD"的ColumnHeader2的所有行。

有什么好主意让我开始吗?

坚持使用数据表和过滤的Linq查询

下面是一个应用于数据表的想法:

DataRow[] Filter(DataTable dt, string[][] filter)
{
    var data = dt.Rows
        .Select()
        .Where(dr => filter.All (s => dr[s[0]].ToString().Equals(s[1]))
        .ToArray();
    return data;
}

如果你枚举一个DataRow,你可以这样使用:

string[][] filter;
foreach (DataRow dr in dt.Rows)
{
    if (filter.All(s => dr[s[0]].ToString().Equals(s[1])))
        // this row should be included
}

如果我正确理解问题,我认为这将返回您想要的行:

var rows = from r in table.AsEnumerable()
           where r.Field<string>(filter[0][0]) == filter[0][1]
              && r.Field<string>(filter[1][0]) == filter[1][1]
           select r;