我有一个foreach
循环。每个循环我得到一个项目的值(长)和名称(字符串)。
现在我想要创建一个ObservableCollection<KeyValuePair<Int32, String>>()
但不是要创建值,而是使用一个以0开头的新索引。集合应该按值排序。如果存在重复值,则应添加两个项目。
示例:
var tempList= new SortedList<long, String>();
foreach (INetworkItem item in ListOfItems)
{
long value = item.ticks;
string name = item.name;
// tried:
// tempList.Add(value , name );
...
}
内容ListOfItems
:
在foreach循环之后,我需要ObservableCollection<KeyValuePair<Int32, String>>()
看起来像:
我该怎么做?
答案 0 :(得分:1)
首先,您需要按刻度排序ListOfItems
。
var items = ListOfItems.OrderBy(x => x.ticks);
然后你应该将它们转换成你想要的格式
0,&#34; cccccc&#34;
1,&#34; aaaaaa&#34;
2,&#34; aaaaaa&#34;
3,&#34; bbbbbb&#34;
您可以Select
执行此操作items = items.Select((x, i) => new KeyValuePair<int,string>(i, x.name));
然后用它初始化你的收藏。
var collection = new ObservableCollection<KeyValuePair<Int32, String>>(items);