【问题标题】:Can I use OrderBy<T> to order by a Join<T> entity?我可以使用 OrderBy<T> 来按 Join<T> 实体排序吗?
【发布时间】:2018-02-21 19:10:55
【问题描述】:

我需要将 Linq 查询转换为 Dynamic Linq,但 OrderBy 部分有问题。

这是 Linq 查询:

var q = from pp in ctx.MyEntity
        join c in sortedListString on pp.CountryId.ToString() equals c.Substring(9)
        orderby c ascending
        select pp;

如您所见,我正在按连接中的实体进行排序。
现在我需要使用动态 linq 编写相同的查询,并且我有:

var q = from pp in ctx.MyEntity
        select pp;

q = q.Join(
    sortedListString, 
    o => o.CountryId.ToString(), 
    i => i.Substring(9), (o, i) => o
).OrderBy(???);

知道我想通过sortedListString 订购,我应该在 OrderBy 中输入什么?

【问题讨论】:

  • 看不到sortedListString
  • 您只返回o,所以sortedListString 没有任何东西可供订购。
  • 我个人更喜欢使用 LINQ 声明式查询语法,因为它更简单易读
  • sortedListString 只是一个 List。这是一种棘手的,不那么干净的黑客,我在这里做的如此赤裸裸:)

标签: c# linq entity-framework-6


【解决方案1】:

不确定您在这里所说的“动态 linq”是什么意思,但使用“完整”LINQ 语法的查询等效于:

var q = ctx.MyEntity
    .Join(sortedListString, 
        pp => pp.CountryId.ToString(), 
        c => c.Substring(9), 
        (pp, c) => new { pp, c })
    .OrderBy(t => t.c)
    .Select(t => t.pp);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多