将linq中的多个字段分组为sql

时间:2014-06-17 20:04:20

标签: linq-to-sql group-by igrouping

我遇到了为LINQSQL中的分组行列表定义数据类型的问题。
我有一个模型MyDBModel,有2个属性

public class MyDBModel
{
  public List<a_Cases_tbl> a_Cases { get; set; }
  public List<b_Cases_tbl> b_Cases { get; set; }
}

在控制器中,我尝试将数据导入此属性

MyDBDataContext myDb = new MyDBDataContext();
var listModel = new MyDBModel();
listModel.a_Cases= 
   (from t in myDb.a_cases_table
    group t by new { t.Date, t.Name, t.Category, t.Code }
    into myGroup
    select new { myGroup.Key.Date, myGroup.Key.Name, myGroup.Key.Category, myGroup.Key.Code  });
listModel.b_Cases = 
 (from t in myDb.B_cases_table
  group t by new { t.Date, t.Name, t.Category, t.Code }
  into myGroup
  select new { myGroup.Key.Date, myGroup.Key.Name, myGroup.Key.Category, myGroup.Key.Code  });

我收到错误:

Cannot implicitly convert type 'System.Collections.Generic.List < AnonymousType#1 > ' to 'System.Collections.Generic.List < MVC4.a_Cases_tbl > '

如果结果将是多列分组列表,那么a_Cases的数据类型应该是什么?或者如果结果按不同类型的多个字段分组,如何定义List < IGrouping < Tkey, Telement > >

1 个答案:

答案 0 :(得分:1)

在您的代码中,您创建了匿名类型列表。您必须告诉编译器您创建了适当类型的对象。

select new  a_Cases_tbl{ myGroup.Key.Date, myGroup.Key.Name, myGroup.Key.Category, myGroup.Key.Code  });

...

select new b_Cases_tbl{ myGroup.Key.Date, myGroup.Key.Name, myGroup.Key.Category, myGroup.Key.Code  });