我對LINQ相當陌生,而且我可能已將自己描繪在這裏的一個角落。我有兩個列表(左和右),我需要:基於特定字段獲取兩個列表之間的差異
一個)獲取基於某些領域
b)獲取左邊不匹配右側項目匹配的項目
ç)獲取左邊
的匹配與不匹配合適的項目,如果某些字段是相等的發現。其他字段可能包含也可能不包含值,但不得影響匹配比較。
要獲得項目一個我執行上都列出了JOIN
:
var q = from a in r1
from b in r2
where a.Prop1 == b.Prop1 && a.Prop3 == b.Prop3
select new { a.Prop1, a.Prop2, b.Prop3 };
我不知道在哪裏可以從這裏走。我認爲我不能使用.Except()
,因爲這兩個列表的其他屬性將不同,並可能導致比較中斷。
我也使用Left Join
嘗試和沒有比賽拿到物品:
var q =
from c in r1
join p in r2 on c.Prop1 equals p.Prop1
into cp
from p in cp.DefaultIfEmpty()
select new { Prop1 = c.Prop1, Prop2 = p == null ? "N/A" : p.Prop2 };
但是我發現,你不能比較多個字段比較。
您是否可以通過LINQ在Left Join
上使用多個字段? 除了LINQ之外,還有其他的方式來獲得兩個列表之間的區別嗎?
謝謝。我已經使用了你和Cuong Le的解決方案。我不知道有'Intersect',所以它會爲我節省'InnerJoin' – Devmonster
不客氣,我很樂意提供幫助。 –