2017-02-06 59 views
1

我有兩個列表:LINQ - 從列表A含有名單B項的輸出真/假「清單」

List<string> list1 = new List<string>(){ "a", "b", "c", "d" }; 

List<string> list2 = new List<string>(){ "b", "d", "e" }; 

我想找到匹配list2中的物品列表1中的所有項目,並生成列表清單3包含:

{ false, true, false, true } 

我該如何去解決這個問題?

由於提前, 波浪

回答

7

這是所有需要:

list1.Select(str => list2.Contains(str)).ToList(); 
2

@Balazs答案是正確的,但你應該知道,在列表Contains操作是O(n)操作。如果列表非常大,那麼創建新列表將是O(n * m)操作,可能會很慢。如果你想檢查某個值是否在其他值之間,最好的方法是使用一些基於散列的結構,其中O(1)用於操作Contains。所以,只需將第二個列表值添加到HashSet中

var hashSet = new HashSet<string>(list2); 
var result = list1.Select(hashSet.Contains).ToList(); 
相關問題