需要一个小的逻辑帮助:我有一个列表视图项目的集合,需要根据其类别(listviewitem.tag.tostring())分类为不同的组例如:我在列表视图中有 10 个项目,其标签为“食物”蔬菜的“饮料”等现在我想要带有这些标签的集合中的项目。
提前致谢
需要一个小的逻辑帮助:我有一个列表视图项目的集合,需要根据其类别(listviewitem.tag.tostring())分类为不同的组例如:我在列表视图中有 10 个项目,其标签为“食物”蔬菜的“饮料”等现在我想要带有这些标签的集合中的项目。
提前致谢
您可以使用 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);
如果您使用ObjectListView - 一个围绕标准 .NET ListView 的开源包装器,ListView 的生活会简单得多。
例如,启用分组是一行,它告诉控件每一行属于哪个组:
lastPlayedColumn.GroupKeyGetter = delegate(object rowObject) {
Song song = (Song)rowObject;
return new DateTime(song.LastPlayed.Year, song.LastPlayed.Month, 1);
};
这给出了这个:
(来源:sourceforge.net)
只需多做一点工作,您就可以创建像这样的花哨的东西:
(来源:sourceforge.net)