我有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
});
我也尝试使用" "
,甚至将分隔符存储在变量中,但没有任何帮助。我在这里做错了什么?
答案 0 :(得分:2)
将SelectMany
替换为Select
。
答案 1 :(得分: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
});