如何在 LINQ to sql 中创建一个方法来返回分组依据的结果,如下所示:
internal SomeTypeIDontKnow GetDivisionsList(string year)
{
var divisions = from p in db.cm_SDPs
where p.acad_period == year
group p by new
{
p.Division
} into g
select new
{
g.Key.Division
};
return divisions;
}
我似乎无法定义正确的返回类型。我认为这是因为它是一种匿名类型,但我还没有完全理解它。我是否需要将其转换为列表或其他内容?
结果将仅用于填充组合框。
最佳答案
您不能*返回匿名类型。
要么您需要确定查询返回的类型,并专门返回该类型,要么您可以重命名方法 BindDivisionsList(...) 并在该方法内执行数据绑定(bind)。
我推荐前者(在这里对你的类型做一些假设):-
internal IEnumerable<Division> GetDivisionsList(string year)
{
IEnumerable<Division> divisions =
from p in db.cm_SDPs
where p.acad_period == year
group p by new
{
p.Division
} into g
select g.Key.Division;
return divisions;
}
或者交替(我通常会这样做):-
internal IEnumerable<Division> GetDivisionsList(string year)
{
IEnumerable<Division> divisions =
db.cm_SPDs.Where(x => x.acad_period == year)
.Select(x => x.Division)
.Distinct();
return divisions;
}
编辑:*您可以,只是没有用——您必须返回“object”。见:-
http://msdn.microsoft.com/en-us/library/bb397696.aspx
-但除非有充分的理由,否则您可能希望尽可能使用命名类型。
关于c# - LINQ to sql 按方法的结果返回组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515348/