2012-07-05 58 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