0

需要一个小的逻辑帮助:我有一个列表视图项目的集合,需要根据其类别(listviewitem.tag.tostring())分类为不同的组例如:我在列表视图中有 10 个项目,其标签为“食物”蔬菜的“饮料”等现在我想要带有这些标签的集合中的项目。

提前致谢

4

2 回答 2

0

您可以使用 aDictionary<string,List<ListViewItem>>来存储组,它Key是组键,可以是food, vegetables, drinks, ... (类别名称)。Value是相应类别中的项目列表。

var groups = listView1.Items.OfType<ListViewItem>()
                      .GroupBy(e=>e.Tag.ToString())
                      .ToDictionary(k=>k.Key, v=>v.ToList());
//Then to access a category's items, just pass in the category name into the Dictionary like this
var food = groups["food"];//this is a List<ListViewItem> of items in the category 'food'
//try printing the items
foreach(var f in food)
   System.Diagnostics.Debug.Print(f.Text);
于 2013-08-31T09:07:21.973 回答
0

如果您使用ObjectListView - 一个围绕标准 .NET ListView 的开源包装器,ListView 的生活会简单得多。

例如,启用分组是一行,它告诉控件每一行属于哪个组:

lastPlayedColumn.GroupKeyGetter = delegate(object rowObject) { 
    Song song = (Song)rowObject; 
    return new DateTime(song.LastPlayed.Year, song.LastPlayed.Month, 1); 
};

这给出了这个:

带有组的 ObjectListView
(来源:sourceforge.net

只需多做一点工作,您就可以创建像这样的花哨的东西:

带有花哨组的 ObjectListView
(来源:sourceforge.net

于 2013-09-02T02:15:52.860 回答