【问题标题】:Append IQueryable to IQueryable [duplicate]将 IQueryable 附加到 IQueryable [重复]
【发布时间】:2018-01-26 20:52:22
【问题描述】:
var q = _context.a
                .Include(x => x.status)
                .Include(x => x.type)
                .Where(x => x.status == 20);

var q1 = _context.a
                 .Include(x => x.status)
                 .Include(x => x.type)
                 .Where(x => x.status == 40);

我需要在 q 结束时在 q1 中有数据

【问题讨论】:

  • 检查这个:Queryable.Concat。以前回答过here
  • @BenHarris 我试过 var q2 = q.concat(q1) 什么也没给我

标签: c# linq iqueryable


【解决方案1】:

试试这个:

var q = _context.a
                .Include(x => x.status)
                .Include(x => x.type)
                .Where(x => x.status == 20).AsQueryable();//ATTENTION AsQueryable()

var q1 = _context.a
                 .Include(x => x.status)
                 .Include(x => x.type)
                 .Where(x => x.status == 40).AsQueryable();//ATTENTION AsQueryable()

q = q.Concat(q1);

但是,您也可以将两个查询合并到一个查询中:

var q = _context.a
                .Include(x => x.status)
                .Include(x => x.type)
                .Where(x => x.status == 20 || x.status == 40)
                .OrderBy(x=>x.status);

【讨论】:

  • 我试图连接的原因是我需要状态为 40 的记录位于表的末尾。我的状态值为 10,20,30,40,50,60,70,但我需要将状态为 40 的记录放到表的末尾。我已经尝试过 q = q.Concat(q1);但它给了我 Null
  • @spartansbmk 为什么你不只是添加一个标志列并根据这个标志对结果进行排序?例如将 1 设置为 40,将 0 设置为剩余,然后仅根据此标志进行排序,而不使用 concat!
  • @spartansbmk for q=q.Concat(q1) 您需要将 AsQueryable() 添加到 q 和 q1,如提供的代码中所述
猜你喜欢
  • 2014-11-09
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
相关资源
最近更新 更多