使用LINQ在数据集中使用Select和GroupBy并返回多个DataRows

时间:2014-07-15 11:03:40

标签: linq datatable

我有DataTable如下:

Term|ChildTerm|ID|PID
---------------------
BOTH|         |1 |5
    |A        |1 |5
    |B        |1 |5
   F|         |2 |5
    |f        |2 |5
    |F        |2 |5
   M|         |3 |5
    |m        |3 |5
    |M        |3 |5
   E|         |4 |6
    |e        |4 |6
    |E        |4 |6
    |Em       |4 |6

我想选择PID = 5和按ID分组 因此,我需要获得三个数据行"两者"," F"," M"我怎么能实现这个

我写了以下代码

var NCIIDS = PCGTDS.Tables[strTableName]
                   .AsEnumerable()
                   .GroupBy(Row => Row.Field<string>("PID") == "5")
                   .Select(Value => Value.First());

foreach (DataRow PCNCIIDS in NCIIDS)
{
    //some operation on the data row
}

但是这只返回First Value,因为Select语句只返回Linq Select中的一个。我如何获得所有三条记录?

1 个答案:

答案 0 :(得分:0)

我能够通过以下代码解决这个问题

 var ncid = from NCI in PCGTDS.Tables[strTableName].AsEnumerable()
                                   group NCI by NCI.Field<string>("PID") == "5";

                        foreach (var n in ncid)
                        {
                            if (n.Key)
                            {
                                foreach (var value in n)
                                {

                                }
                            }

                        }