LINQ使用C#asp.net按数据表中的where条件分组

时间:2018-07-07 09:52:50

标签: c# asp.net-mvc linq datatable webforms

我在LINQ中非常陌生,并尝试在何处使用条件。

下面是我的代码在没有where条件的情况下可以正常工作。

 List<DataTable> result = dt.AsEnumerable()
      .GroupBy(x => x.Field<int>("row_Id")) 
      .Select(grp => grp.CopyToDataTable())
      .ToList();

在我的数据表dt中获取此数据。

 row_id         name
  0              Mazhar
  0              Raj
  1              Khan
  1              Ravi

我需要将row_id = 0和row_id = 1数据分开。

2 个答案:

答案 0 :(得分:0)

下面的.Where子句将过滤rowId = 0的结果。

List<DataTable> result = dt.AsEnumerable()
  .Where(w => w.Field<int>("row_Id") == 0)
  .GroupBy(x => x.Field<int>("row_Id")) 
  .Select(grp => grp.CopyToDataTable())
  .ToList();

答案 1 :(得分:0)

        var result = dt.Rows.Cast<DataRow>( )
                            .Select( x => new { ID = x.ItemArray[0], ROW = x } )
                            .GroupBy( x => (string)x.ID )
                            .ToList( );

此LINQ将row_id = 0分隔为row_id = 1。 如果您需要iEnumerable中的DataRow

        var result0 = result.Where( x => (string)x.Key == "0" ).FirstOrDefault( ).Select( x => x.ROW ).ToList( );
        var result1 = result.Where( x => (string)x.Key == "1" ).FirstOrDefault( ).Select( x => x.ROW ).ToList( );