【问题标题】:Having problems with this Linq/Lambda statement :(这个 Linq/Lambda 语句有问题:(
【发布时间】:2010-10-10 23:07:44
【问题描述】:

更新 - 我修复了下面的查询。我有错误的查询/错误语句:(

我有如下声明:

var posts = BlogPostRepository.Find()
    .Where(x => x.Tags.Where(y => y.Name == tag))
    .ToList();

第二个(内部)Where 子句给我一个编译时错误,说:-

错误 1 ​​无法将 lambda 表达式转换为委托类型“System.Func”,因为块中的某些返回类型不能隐式转换为委托返回类型

我正在尝试按特定标签名称过滤所有博客帖子。

【问题讨论】:

  • 您的示例代码中的“tag”标识符是什么?
  • @CesarGon 具有int Idstring Name 的类。

标签: .net linq lambda


【解决方案1】:

这部分:

  x.Tags.Where(y => y.Name == tag)

将返回 Tags 中具有 Name == tag 的任何内容的 IEnumerable。然后,您将其与没有多大意义的“真实”进行比较。

也许你想要这个?

var posts = BlogPostRepository.Find()
    .Where(x => x.Tags.Any(y => y.Name == tag))
    .ToList()

或者代替 Any,All?

【讨论】:

  • 他,感谢您的示例,我刚刚意识到 Any 可以像 IN SQL 子句一样使用。
  • 酱汁。的。惊人的。 (我也使用了 Any 并且它返回了所有结果,顺便说一句)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多