2011-11-21 59 views
3

我想顯示分組列表框這樣的:如何把相同的項目在多個組內的ListBox

  • 標籤的
    • 後1
    • 後2
  • 標籤B
    • Post 2

源集合是Post的列表,每個帖子可以有很多標籤。 如果用戶選擇「發佈2」,它會突出顯示兩次。

我試過使用ICollectionView,但它需要一個單值來過濾,而不是多值。

回答

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)。

在此之後,分組將適用於罰款。

相關問題