我有一个名为Post的基本classt(实体框架):
Public class Post
{
Public int Id { get; set; }
Public string Description { get; set; }
Public string Tags { get; set; }
}
Tags
属性包含帖子的标签列表(以逗号分隔)。
是否可以让Linq返回Post实体中存在的所有不同标签?
例如,如果我有:
结果应该是:java,cobol,foxpro,sybase,csharp
非常感谢你的帮助。
答案 0 :(得分:2)
您可以使用Split()
和SelectMany()
。
posts.SelectMany(x => x.Tags.Split(',')).Distinct()
答案 1 :(得分:2)
您无法一步完成此操作,因为拆分和重新组合以逗号分隔的字符串所需要做的事情不会通过LINQ to Entities公开。您需要先撤回数据,然后处理标记。
var tags = db.Posts.Select(p => p.Tags)
.Distinct() // let SQL save us a little work, if some posts have same sets of tags
.ToList() // this causes the query to execute
.SelectMany(t => t.Split(',')) // this happens client-side
.Distinct();