2014-10-08 218 views
-2

我有兩個列表比較兩個列表C#

List<int> a = {1,2,3}; 
List<int> b = {3,4}; 

我需要給他們以這樣的方式輸出應是

1 false 
2 false 
4 true 

的輸出是通過以下邏輯

比較
  • 1,2a但不在b因此它們被設置爲false,而
  • 3是在兩個列表,以便其不會在輸出和
  • 「4」是在b但不是在a所以它們被設置爲true

返回類型是一個List<modelClass>那有int id, bool isTrue屬性

你能幫我嗎?

+1

這是什麼邏輯? – 2014-10-08 07:14:41

+1

是否有一個特定的原因,您選擇提供示例輸出,但不能解釋會產生此類輸出的規則?如果你不能用筆和紙做這個,那麼你如何編寫代碼來做到這一點?如果你可以用筆和紙做,那麼你就知道所需的步驟,你可以告訴我們。 – jmcilhinney 2014-10-08 07:14:47

+1

請聯繫我們的業務。 – Gowtham 2014-10-08 07:15:35

回答

2

如果你不關心性能,你可以使用下面的LINQ:

a.Except(b) 
    .Union(b.Except(a)) 
    .Select(item => new { id = item, isTrue = b.Contains(item) }); 

隨着HashSet用法:

var setA = new HashSet<int>(a); 
var setB = new HashSet<int>(b); 
setA.SymmetricExceptWith(b); 

var result = setA.Select(item => new { id = item, isTrue = setB.Contains(item) });