c# - LINQ to sql 按方法的结果返回组

标签 c# linq-to-sql

如何在 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/

相关文章:

linq - 如何在 linq 中删除和重新插入实体?

c# - Linq 到 SQL : Why am I getting IDENTITY_INSERT errors?

c# - 在 ASP.NET Core 2 和 Entity Framework Core 2 中查询表中的附近位置

c# - ThreadLocal 与 C# 中的局部变量

c# - drawString方法如何用对角线写法

c# - LINQ 插入提交 : NullReferenceException

linq-to-sql - LINQ Clear() 不会从数据库中删除行

c# - 使用 Firebug 和 Selenium 自动进行页面加载性能测试

c# - 使用 MVVM 将矩形添加到 Canvas

c# - 如何将 Linq2SQL 集合数据绑定(bind)到 winform 文本字段