2012-07-05 57 views
0

所有的項目我想獲得從這個LINQ查詢相交的所有值:選擇相交

Where(x => x.Attribute("name").Value).Intersect(myList).Any(); 

我不知道如何添加一個選擇。

+0

假設Where應用於'T'集合,是否希望您的結果是'T'的集合或'T.Attribute(「name」)類型的集合。 – 2012-07-05 10:16:46

+0

@BobVale T.Attribute(「name」)的集合值。 – kmxillo 2012-07-05 10:40:32

回答

2

我假設你想要的所有屬性( 「名稱」)。價值是在myList中

您可以做

Where(x=>myList.Contains(x.Attribute("name").Value)).Select(x=>x.Attribute("name").Value) 

Select(x=>x.Attribute("name").Value).Intersect(myList) 
+0

第二個答案獲取併發生錯誤:_Cannot無法將lambda表達式轉換爲委託類型'System.Func ',因爲塊中的某些返回類型不會隱式轉換爲委託返回類型。 _有沒有解決方案,因爲它似乎更容易解決。 (第一作品) – kmxillo 2012-07-05 10:53:28

+0

@kmxillo我做了一個錯字,錯過了'x =>'。我已經更新了答案 – 2012-07-05 10:57:09

1

你爲什麼要交集?爲什麼不只是List.Contains?

data.Where(x => myList.Contains(x.Attribute("name").Value).ToList(); 

data.Select(x => x.Attribute("name").Value).Intersect(myList); 
+0

x是XElement。如何轉換爲列表,因爲.Value返回String。 – kmxillo 2012-07-05 10:25:16

+0

字符串列表是 – kmxillo 2012-07-05 10:30:00

+0

@kmxillo:請詳細說明。 – abatishchev 2012-07-05 10:30:11