C#如何对列表并更新到列表视图,列表视图仅显示部分
本文关键字:列表 视图 更新 显示部 排序 | 更新日期: 2023-09-27 17:56:25
public class ListKeywords
{
public int ID { set; get; }
public string Keyword { set; get; }
public string Language { set; get; }
public int WordCount { set; get; }
}
List<ListKeywords> keywordsList = new List<ListKeywords>();
//
listview1.Add(new ListKeywords() { ID = keywordsList.Count+1, Keyword = line.Trim(), WordCount = countWords(line) });
我想将 10000 个列表关键字项添加到列表关键字,但我只想在 listview1 控件中显示前 1000 项。
现在,如果对列表视图 1 进行排序,我想对所有项目进行排序(列表关键字),而不仅仅是对列表视图 1 中的前 1000 个项目进行排序。
怎么办?
对不起,我的英语不是很好
List<ListKeywords> SortedList = SortedList.OrderBy(o=>o.ID).Take(1000).ToList();
您可以将列表视图绑定到为您完成工作的属性。像这样:
public List<ListKeywords> Top1000Sorted
{
get
{
return keywordsList.OrderBy(x => x.ID).Take(1000).ToList();
}
}
并使用以下方法绑定列表视图:
listview1.ItemsSource = Top1000Sorted;
如果你想按键杆排序,那么使用这个:
var top1000Items = keywordsList.OrderByDescending(x=>x.Keyword).Take(1000);
如果你想通过 ID 进行排序,请使用这个:
var top1000Items = keywordsList.OrderByDescending(x=>x.ID).Take(1000);
因此,如果您有 10.000 个项目,并且层 ID 从 1 开始到 10000,那么如果按 ID 排序,则top1000Items
的 ID 范围为 9001 到 10000。
在选择前 1000 个对象之前,只需使用列表的 OrderBy
方法即可。 然后Take
前 1000 个条目。
所以,像这样的方法:
public List<ListKeywords> SortByIdAndSelectRange(List<ListKeywords> list, int range)
{
return list.OrderBy(x => x.ID).Take(range).ToList();
}
用:
myList = SortAndSelectRange(myList, 1000);
您可以进一步修改该方法以决定要作为排序依据的内容。
这是一个非常粗略的示例,显示了上述方法的用法:
class ListKeywords
{
public int ID { set; get; }
}
class Program
{
static void Main(string[] args)
{
var myList = new List<ListKeywords>();
Random rnd = new Random();
for (int i = 0; i < 3000; i++)
{
var entry = new ListKeywords() { ID = rnd.Next(3000, 9999) };
myList.Add(entry);
}
myList = SortByIdAndReturnRange(myList, 1000);
foreach (var entry in myList)
{
Console.WriteLine(entry.ID);
}
}
static List<ListKeywords> SortByIdAndReturnRange(List<ListKeywords> list, int range)
{
return list.OrderBy(x => x.ID).Take(range).ToList();
}
}
最后,您可以进行堆栈排序:
myList.OrderBy(x => x.Param1).ThenBy(x => x.Param2).ThenBy(x => x.Param3) ... and so on.
当我想按日期对列表进行排序,然后每天按时间排序时,我会使用它。