2016-04-27 77 views
0

能在下面的查詢的兒童表的欄中適用條件嗎?Linq-在兒童表的條件

病人是主表,我需要補充下面,其中有一列條件評估表像

Where(a => a.Date >= startdate && a.Date < stopdate && a.patient.assess.column1 == 10) 

完整的查詢

=> dc.Patient 
     .Include("first") 
     .Select(a => new 
     { 
      Patient = a, 
     Date = a.Assess.Max(x => x.Date), 
     M3 = a.M3, 
     Assess = a.Assess, 
     Details = a.Assess 
        .Select(x => new 
      { 
       x.Key, 
      x.Team 
      }) 
     }) 
     .Where(a => a.Date >= startdate && a.Date < stopdate) 
     .OrderBy(a => a.Date) 
     .Take(batchSize) 
     .ToList() 
    ); 
+0

一對多的關係嗎?如果其中一個孩子的價值是10而另一個孩子的價值是20呢?你想在查詢中包含父項嗎? –

+1

如果您只想讓任何孩子的值爲10,則可以使用以下條件:'a.Assess.Any(x => x.column1 == 10)'。 –

回答

1

可以使用其他子/包埋的λ lambda中的語句。在這種情況下,可以在Where語句中引用IEnumerable.Any語句。任何將返回true如果有任何條件匹配的lambda可以調用爲Assess是一個集合。

我的假設是:

  • Assess是一個強類型集合
  • 你想要的任何Where子句,匹配,如果有收集其屬性column等於價值的任何Assess情況10

代碼:

=> dc.Patient 
    .Include("first") 
    .Select(a => new 
    { 
     Patient = a, 
     Date = a.Assess.Max(x => x.Date), 
     M3 = a.M3, 
     Assess = a.Assess, 
     Details = a.Assess.Select(x => new 
     { 
      x.Key, 
      x.Team 
     }) 
    }) 
    .Where(a => a.Date >= startdate && a.Date < stopdate && a.Assess.Any(ass => ass.column1 == 10)) 
    .OrderBy(a => a.Date) 
    .Take(batchSize) 
    .ToList() 
); 
+0

謝謝伊戈爾。讚賞。 – chint

+0

@chint - 很高興幫助。此外,如果您的問題的答案是您認爲最好的或最能幫助您的問題的答案,請使用該答案旁邊的複選標記將答案標記爲答案(支票將變爲綠色)。您只能在每個問題中將1個答案標記爲「正確」。 – Igor