我想显示一个像这样的分组ListBox:
源码集是一个帖子列表,每个帖子都可以有很多标签。 如果用户选择“Post 2”,则会突出显示两次。
我尝试使用ICollectionView,但它需要一个Single值来过滤,而不是多值。
答案 0 :(得分:1)
假设这是你的结构...
public class Post
{
public string Name { get; set; }
public string[] Tags { get; set; }
}
您可以实现基于分组的分组的唯一方法是将其展平
var PostTagList = myPosts.SelectMany(
p => p.Tags,
(owner, tag) => new {owner, tag}).Select(
ot => new Post()
{
Name = ot.owner.Name,
Tags = new string[] { ot.tag }
}).ToList();
通过这种方式,您可以使用每个标记重复Post
个对象的扁平层次结构(即Post.Tags
属性只有Post
个标记。
在此之后,分组将适用。