我需要一些linq查询的帮助。
基本上,我有一个数据表,其中一些列被枚举为数据行。我需要获得匹配字符串[] []的所有行。示例如下。
string[0][0] = ColumnHeader1
string[0][1] = Hello
string[1][0] = ColumnHeader2
string[1][1] = World
因此,我需要返回所有包含ColumnHeader1的行,包含“Hello”和包含“WORLD”的ColumnHeader2。
让我开始的任何想法?
答案 0 :(得分:0)
这是一个应用于DataTable的想法:
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
}
答案 1 :(得分:0)
如果我正确理解了这个问题,我认为这会返回你想要的行:
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;