【问题标题】:Select all Items which intersect选择所有相交的项目
【发布时间】:2012-07-05 10:07:59
【问题描述】:

我想从这个 LINQ 查询中获取所有相交的值:

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

我不知道如何添加选择。

【问题讨论】:

  • 假设 Where 被应用于 T 的集合,是否希望您的结果是 T 的集合或 T.Attribute("name").Value 类型的集合?
  • @BobVale T.Attribute("name").Value 的集合

标签: c# .net linq linq-to-xml intersect


【解决方案1】:

我假设您想要 myList 中的所有 Attribute("name").Value

你可以这样做

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

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

【讨论】:

  • 第二个答案得到和错误:Cannot convert lambda expression to delegate type 'System.Func' 因为块中有一些返回类型不能隐式转换为委托返回类型。 是否有任何解决方案,因为它似乎是一个更简单的解决方案。 (第一部作品)
  • @kmxillo 我打错了,错过了x=>。我已经更新了答案
【解决方案2】:

你为什么做交叉路口?为什么不只是 List.Contains?

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

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

【讨论】:

  • x 是 XElement。如何转换为 List 因为 .Value 返回 String.
  • 对不起,你错过了一个父母。而那个解决方案行不通,
  • @kmxillo:由于匆忙而犯了愚蠢的错误。那是复制粘贴。现在修好了。
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
相关资源
最近更新 更多