在C#中按标签对ListView进行排序

时间:2019-03-20 12:38:16

标签: c# sorting listview

我有一个包含某些列listViewItems的列表视图。当我使用排序方法listViewItems.Sort();时,默认情况下会按列文本进行排序。这是我使用的代码:

private void OnColumnClick(object sender, ColumnClickEventArgs e)
        {
            int sortColumn = 0; --I only want to sort if you click this column header, not others
            if (e.Column == sortColumn)
            {
                if (listViewItems.Sorting == SortOrder.Ascending)
                {
                    listViewItems.Sorting = SortOrder.Descending;
                }
                else
                {
                    listViewItems.Sorting = SortOrder.Ascending;
                }
            }
            listViewItems.Sort();

但是,我的物品有一个标签,listViewItems[0].Tag;可以访问

我想使用该标签对列表进行排序(在我的情况下,标签为int),但是我不知道该怎么做,也不知道类似信息。排序方法不接受任何参数。我试图创建一个列排序器,但它也希望有一个列。

ListViewColumnSorter lvwColumnSorter;
lvwColumnSorter = new ListViewColumnSorter();
listViewItems.ListViewItemSorter = lvwColumnSorter;
lvwColumnSorter.SortColumn = ?;

有什么想法吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

var items = ListView.Items.Cast<ListViewItem>().OrderBy(x => x.Tag).ToList();
ListView.Items.Clear();
ListView.Items.AddRange(items.ToArray());