[英]LINQ inner join condition
假設我有下表:
**Members**
Code Name
001 Sue
002 Peter
003 John
**Sales Info**
MemCode Date Type (A/B) Values
001 17/12/2013 A 100
001 17/11/2013 B 100
002 16/12/2013 A 100
我想要以下結果表
**Member Sales in 2013**
MemCode Jan(A) Jan(B) Feb(A) ... Nov(B) Dec(A) Dec(B)
001 0 0 0 100 100 0
002 0 0 0 0 100 0
我首先嘗試使用查詢來修正一些數據(Nov(A)和Nov(B)),
var query = from tb in Members
join tb2 in SalesInfo on tb.MemCode equals tb2.MemCode
join tb3 in SalesInfo on tb.MemCode equals tb3.MemCode
where tb2.Type.Equals("A") &&
tb2.Date.Month.Equals(11)
tb3.Type.Equals("B") &&
tb3.Date.Month.Equals(11)
Select ...
但是,由於沒有在11月找到A記錄,因此它不返回任何數據,因此將對整個行進行過濾。 有解決問題的建議嗎?
問題是您要輸入(Type == A && Type == B),這是不可能的。 您可以先選擇A,然后在子查詢中獲得相同日期的B值。
確實,如果要使用類型A和類型B,則應在類型== A或類型== B上進行選擇。沒有行會同時滿足這兩個條件:)
這樣的事情更簡單,也可能更有效
var query = from tb in Members
join tb2 in SalesInfo on tb.MemCode equals tb2.MemCode
where (tb2.Type.Equals("A") ||
tb2.Type.Equals("B")) &&
tb2.Date.Month.Equals(11)
Select ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.