【问题标题】:Linq Query with using sum and order by使用 sum 和 order by 的 Linq 查询
【发布时间】:2012-05-02 18:30:37
【问题描述】:

我有如下课程,

public class SiteActionMap
{
        public int Id { get; set; }
        public string ImageName { get; set; }
        public int ParentId { get; set; }
        public string Name { get; set; }

        public  virtual ICollection<SiteActionMap> Childrens { get; set; }
        public  virtual SiteActionMap Parent { get; set; }
        public bool Active { get; set; }

}

我想得到一个按儿童数量排序的列表。

我正在尝试这样的事情,但我没有工作。

List<SiteActionMap> list = dbContext.SiteActionMap
                .Include(m => m.Childrens)
                .Include(m => m.Parent)
                .OrderBy(i => i.Childrens.Count)
                ToList();

我如何根据儿童数量对我的列表进行排序?

【问题讨论】:

  • OrderByDescending 不起作用,
  • 您确定第二个示例中分号的位置吗?这不应该编译...
  • 是的,但我怎么能?问题是......
  • 我不禁有点语法巨魔,但Children已经是复数形式了。下面的两个答案都是正确的。即使 ICollection 有一个 Count 属性,它也可能不会映射到 DB 上下文,但 Count() 方法会。
  • 我目前无法检查,但您是这里延迟加载的受害者吗?可能是第一个 .Include() 之前的 .ToList()?

标签: c# .net linq entity-framework entity-framework-4


【解决方案1】:

补充一下 lbruder 所说的,在这种情况下 Count 不是一个方法 () 吗?

List<SiteActionMap> list = dbContext.SiteActionMap
                .Include(m => m.Childrens)
                .Include(m => m.Parent)
                .OrderByDescending(i => i.Childrens.Count())
                .ToList();

【讨论】:

  • 它的工作,但 OrderBy(i => i.Childrens.Count()) 没有工作?为什么?
【解决方案2】:

你试过吗?只需删除 Order... 行后的分号并继续执行命令:

List<SiteActionMap> list = dbContext.SiteActionMap
                .Include(m => m.Childrens)
                .Include(m => m.Parent)
                .OrderByDescending(i => i.Childrens.Count)
                .ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多