0

我有Post很多Tags我选择那个标签的地方Name。我只想将所有标签输出为简单的字符串。

我收到这些错误

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

无法将类型“int”隐式转换为“char”。存在显式转换(您是否缺少演员表?)

var posts = _db.Posts.OrderByDescending(x => x.CreatedDateTime).AsEnumerable().Select(post => new
{
    post.Id,
    post.Title,
    Tags = post.Tags.SelectMany(x => x.Name).Aggregate((current, next) => current + ',' + next) // error
});

我也尝试过使用" "分隔符,甚至将分隔符存储在变量中,但没有任何帮助。我在这里做错了什么?

4

2 回答 2

2

将您的替换SelectManySelect.

于 2013-10-13T15:54:40.877 回答
1

SelectMany 展平返回列表列表的查询,它就像一个连接快捷方式,因此您会收到错误。您需要做的就是用 Select 替换它,这是代码,它应该可以工作:

var posts = _db.Posts.OrderByDescending(x => x.CreatedDateTime).AsEnumerable().Select(post => new
{
    post.Id,
    post.Title,
    Tags = post.Tags.Select(x => x.Name).Aggregate((current, next) => current + ',' + next) // error
});
于 2013-10-13T15:57:51.393 回答