2

LINQはforeachよりもはるかに高速であるため、このコードをLINQクエリに変換したいと思います。私はそれを行う方法がわかりません。基本的に単純なLINQクエリを実行できます。

私がやろうとしているのは、辞書の特定のフィールドを取得することです。

Dictionary<string, object> fieldLayout = null;
foreach (Dictionary<string, object> dic in pageLayout)
{
    if (dic[ "FIELD" ].ToString() == "123")
    {
        fieldLayout = dic;
        break;
    }
}
4

3 に答える 3

3

fieldLayout = pageLayout.FirstOrDefault(dic => dic["FIELD"].ToString() == "213");

于 2012-07-30T11:44:23.173 に答える
2

まず、LINQ は foreach ループよりも高速ではありません。

実装は次のとおりです。

Dictionary<string, object> fieldLayout = pageLayout.Where(x => x["FIELD"].ToString() == "123").FirstOrDefault();

またはさらに良い:

Dictionary<string, object> fieldLayout = pageLayout.FirstOrDefault(x => x["FIELD"].ToString() == "123");
于 2012-07-30T11:45:38.870 に答える
2

LINQ は よりもほとんど高速ではありませんがforeach、それはここでは範囲外です。

var fieldLayout = pageLayout.FirstOrDefault(pl => pl["FIELD"].ToString() == "123");
于 2012-07-30T11:45:11.740 に答える