如何对字典进行排序<k,字典<k,v =“”>&gt;使用LINQ操作?</k,>

时间:2012-08-31 16:36:57

标签: .net linq sorting dictionary

我认为这可以在单个LINQ中完成,但无法弄清楚。以下的表现还可以(大清单上2秒)。主要是我想摆脱创建List只是为了排序的内存命中。需要返回按第二个int排序的dlWord21,然后是第一个int。

List<DocFTSinX> docFTSinXs = new List<DocFTSinX>();
foreach (KeyValuePair<int, Dictionary<int, byte>> kvpm in dlWord21)
{
    foreach (KeyValuePair<int, byte> kvps in kvpm.Value)
    {
        docFTSinXs.Add(new DocFTSinX(kvps.Key, kvpm.Key, kvps.Value));
        //                           Word1     Word2
    }
}
dlWord21.Clear();
return docFTSinXs.OrderBy(x => x.Word1).ThenBy(x => x.Word2);

1 个答案:

答案 0 :(得分:2)

您想使用SelectMany

return dlWord21.SelectMany(o => o.Value, (x, y) => new DocFTSinX(y.Key, x.Key, y.Value))
               .OrderBy(x => x.Word1)
               .ThenBy(x => x.Word2);