【问题标题】:combine 2 queries from the same table into one linq query将同一张表中的 2 个查询合并为一个 linq 查询
【发布时间】:2016-09-27 13:37:29
【问题描述】:

我有 2 个查询是查询同一个表但具有不同的参数,我想合并为一个, 查询 1

 //ToDo refactor
        int myDayOfWeek = 0;
        DateTime dt = DateTime.Today;
        myDayOfWeek = (int)dt.DayOfWeek;

        var todaysLecture = (from c in _context.LectureGigs.Where(g => g.IsWeekLy == true && (int)g.Days == (myDayOfWeek))
                             select c).ToList();
        //results Ok 1 result

查询 2

var upCommingLecture = _context.LectureGigs
            .Include(g => g.Artist).Include(g => g.Genre)
            .Where(g => g.DateTime > DateTime.Now && !g.IsCanceled);
        //results Ok 2 result

我想创建的查询

 var upCommingLecture = _context.LectureGigs
           .Include(g => g.Artist).Include(g => g.Genre).Where(g => g.IsWeekLy == true && (int)g.Days == (myDayOfWeek))
           .Where(g => g.DateTime > DateTime.Now && !g.IsCanceled);
        //Error none but 0 result

我也试过了

var upCommingLecture = _context.LectureGigs
           .Include(g => g.Artist).Include(g => g.Genre)
           .Where(g => g.DateTime > DateTime.Now && !g.IsCanceled && g.IsWeekLy==true &&(int)g.Days==(myDayOfWeek));
        //Error none but 0 result

【问题讨论】:

  • 你不能使用 where 子句来使用 OR 条件吗?这样你就可以把你的两个陈述合二为一了?
  • 嗨,在我的查询中,我想同时获得结果(q1 和 q2 -3 项总数)而不是其中一个查询的结果

标签: c# asp.net-mvc linq linq-to-sql


【解决方案1】:

OR (||),而不是 AND (&&)

var upCommingLecture = _context.LectureGigs
       .Include(g => g.Artist).Include(g => g.Genre)
       .Where(g => (g.DateTime > DateTime.Now && !g.IsCanceled) 
                || (g.IsWeekLy==true &&(int)g.Days==(myDayOfWeek)));

【讨论】:

  • OP:请务必注意此处的括号。 OR 的每一边都被包裹在括号中,因为不这样做会产生很大不同的结果,因为在每一边内都是 AND 运算符。
  • Or (||) 不是我的意图我需要两个结果
  • @AssafOur 在您上面的评论中(对您原来的问题),您说您希望退回 3 件商品。这就是 OR 这里给你的。它将为您提供满足查询 1(1 项)或查询 2(2 项)的项目,这意味着它将为您提供 1 项 + 2 项 = 3 项。
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多