【问题标题】:How do I order an underlying child collection of a parent class in LINQ lambda如何在 LINQ lambda 中订购父类的基础子集合
【发布时间】:2011-03-30 13:40:17
【问题描述】:

例如:

_ctx.DataContext.Set<ParentClass>().Include("ChildCollection").OrderBy(...)

每次我在 OrderBy 子句中放置一个 Lambda 表达式时,我都无法访问 ChildCollection 属性之外的属性,我希望基础子集合按这些属性进行排序。我不希望父类按任何特定列排序。

如何使用 LINQ/Lambda 表达式实现这一点?看起来应该很简单!

【问题讨论】:

标签: linq entity-framework lambda linq-to-entities


【解决方案1】:

急切加载无法订购导航属性。你必须使用这样的东西:

var query = _ctx.DataContext
                .Set<ParentClass>()
                .Select(p => new 
                   {
                      Parent = p,
                      Childs = p.ChildCollection.OrderBy(c => c.Something)
                   });

【讨论】:

  • 嗨,我对你的示例解决方案有很大的问题。 1) 我需要从我的存储库中返回一个非匿名类型。 2) 底层集合是 IList 类型,因此在从 IOrderedEnumerable 转换时似乎很糟糕。正在为此苦苦挣扎……
  • 在这种情况下,您必须定义新类型,因为据我所知,投影无法填充实体类型。
  • 是的有序枚举不能放入列表。您必须具有自定义类型的 IOrderedEnumerable 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多