遇到这个Linq / Lambda声明的问题:(

时间:2010-10-10 02:39:41

标签: .net linq lambda

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

我有以下声明:

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

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

  
    

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

  

我正在尝试按特定标记名称过滤所有BlogPost。

1 个答案:

答案 0 :(得分:2)

这部分:

  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?