C# keyvaluepairs绑定列表中的自定义排序
我有一个动态填充的keyvaluepair绑定列表C# keyvaluepairs绑定列表中的自定义排序,c#,winforms,sorting,bindinglist,C#,Winforms,Sorting,Bindinglist,我有一个动态填充的keyvaluepair绑定列表 BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>(); foreach (ListItem item in listBox2.Items) { Homelist.Add(new KeyValuePair<int, string>
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}
BindingList Homelist=newbindingList();
foreach(listBox2.Items中的ListItem项)
{
添加(新的KeyValuePair(item.Id,item.Name));
}
列表包含键(id)和值(文本),如图所示
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}
我想对前5个项目进行asc排序,然后对其余项目进行asc排序。排序必须按值而不是按键。
示例:如果我有值:4,5,8,7,6,10,9,3,2,1,22,排序结果必须是4,5,6,7,8,1,2,3,9,10,22。你知道吗
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}
解答:
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}
public int Compare(KeyValuePair<int,string> a, KeyValuePair<int,string> b)
{
return a.Value.CompareTo(b.Value);
}
List<keyvaluepair><int,>> Playinglist = new List<keyvaluepair><int,>>();
for (int i = 0; i < 5; i ++)
{
Playinglist.Add(Homelist[i]);
}
Playinglist.Sort(Compare);
List<keyvaluepair><int,>> Benchlist = new List<keyvaluepair><int,>>();
for (int i = 5; i < Homelist.Count(); i++)
{
Benchlist.Add(Homelist[i]);
}
Benchlist.Sort(Compare);
//union 2 lists
var unionedList = new List<keyvaluepair><int,>>();
unionedList.AddRange(Playinglist.Union(Benchlist));
Homelist.Clear();
for (int i = 0; i < unionedList.Count(); i++)
{
Homelist.Insert(i, unionedList[i]);
}
game.GetHomelist = Homelist;
public int比较(键值对a、键值对b)
{
返回a.Value.CompareTo(b.Value);
}
列表>播放列表=新列表>();
对于(int i=0;i<5;i++)
{
Playinglist.Add(Homelist[i]);
}
播放列表。排序(比较);
列表>基准列表=新列表>();
对于(int i=5;i();
unionedList.AddRange(Playinglist.Union(Benchlist));
Homelist.Clear();
对于(int i=0;i
托尼·霍普金森说的想法是把名单一分为二。分别对它们进行排序,然后将它们重新连接在一起。然后清除bindlist并从连接列表中填充。排序只能应用于列表,不能应用于绑定列表。Answare在编辑问题中Um是什么让它以现在的顺序出现的。如果这个问题太难解决,就把清单一分为二。你能给我举个例子吗?不,你没有回答我的任何问题。
BindingList<KeyValuePair<int, string>> Homelist = new BindingList<KeyValuePair<int, string>>();
foreach (ListItem item in listBox2.Items)
{
Homelist.Add(new KeyValuePair<int, string>(item.Id, item.Name));
}