2016-09-27 107 views
1

我有2個查詢是查詢同一個表,但使用不同的參數,我想結合成一體, 查詢1從同一個表合併2個查詢到一個LINQ查詢

//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 
+0

難道你們就不能使用where子句中使用OR條件?這樣你可以把你的言論作爲一個整體嗎? – mahlatse

+0

嗨,在我的查詢中,我希望得到兩個結果(q1和q2 -3項目總數),而不是其中一個查詢的結果。 –

回答

3

OR||),不&&

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))); 
+1

OP:在此注意括號是很重要的。 OR的每一側都包裹在parens中,因爲不這樣做會有很多不同的結果,因爲WITHIN每一側都是AND運算符。 –

+0

或(||)不是我的意圖我需要兩個結果 –

+1

@AssafOur在你的評論上面(到你原來的問題)你說你想要返回3件物品。這就是OR在這裏給你的。它會給你滿足查詢1(1項)或查詢2(2項)的項目,這意味着它會給你1項+ 2項= 3項。 – Alex