0

我有一个像这样的数据表:

    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"); 在这种情况下不起作用。

谢谢

4

2 回答 2

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();
}

我不知道这有多有效,但至少这似乎有效

于 2013-07-05T20:20:58.957 回答
0

您可以使用 LINQ to DataSet

var rows = table.AsEnumerable().Where(r => r.Field<int>("ID") == 1);             

顺便说一句,根据您应该过滤的所需结果ID

于 2013-07-05T20:15:57.733 回答