1

これは単一のLINQで実行できると思いますが、理解できません。以下のパフォーマンスはOKです(ビッグリストで2秒)。主に、並べ替えのためだけに List を作成するというメモリ ヒットから逃れたいと考えています。2 番目の int、次に最初の int でソートされた dlWord21 を返す必要があります。

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);
4

1 に答える 1

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);
于 2012-08-31T16:58:27.887 に答える