我有一个数据表:
ID | ID2
--------
1 | 2
1 | 3
12 | 2
15 | 3
我需要使用ID2过滤数据表(在这种情况下我知道两个ID2值2和3),这样我就可以输出
ID | ID2
--------
1 | 2
1 | 3
这意味着应该选择具有两个ID2(2和3)的ID。
dt.Select(“ID2 = 2 AND ID2 = 3”);在这种情况下不起作用。
由于
答案 0 :(得分:3)
目前尚不清楚你在寻找什么 如果要提取ID列的相同值出现两次或更多次的所有行,则
DataRow [] rows = dt.Select(“Count(ID)> 1)”)
你是对的,这对没有关系的数据表不起作用 我找到了一个解决方案,使用Linq,
// Returns an IGrouping<int,DataRow> for every ID that appears more than one time
var result = dt.AsEnumerable().GroupBy(z => z.Field<int>("ID"))
.Select(q=> new{Count = q.Count(), ID=q.Key})
.Where(x => x.Count > 1);
// Now we could extract the rows in the usual way
foreach(var l in result)
{
DataRow[] r = dt.Select("ID=" + l.ID);
r.Dump();
}
我不知道这有多高效,但至少这似乎有效
答案 1 :(得分:0)
您可以使用LINQ to DataSet
var rows = table.AsEnumerable().Where(r => r.Field<int>("ID") == 1);
根据所需结果BTW,您应按ID
过滤。