C# 使用LINQ查询而不是foreach循环

C# 使用LINQ查询而不是foreach循环,c#,.net,linq,C#,.net,Linq,我想将这段代码转换为LINQ查询,因为LINQ比foreach快得多。 我不知道如何去做,我可以做基本上简单的LINQ查询 我想做的是在字典中找到一个特定的字段 Dictionary<string, object> fieldLayout = null; foreach (Dictionary<string, object> dic in pageLayout) { if (dic[ "FIELD" ].ToString() == "123") {

我想将这段代码转换为LINQ查询,因为LINQ比foreach快得多。 我不知道如何去做,我可以做基本上简单的LINQ查询

我想做的是在字典中找到一个特定的字段

Dictionary<string, object> fieldLayout = null;
foreach (Dictionary<string, object> dic in pageLayout)
{
    if (dic[ "FIELD" ].ToString() == "123")
    {
        fieldLayout = dic;
        break;
    }
}
Dictionary fieldLayout=null;
foreach(页面布局中的词典dic)
{
如果(dic[“字段”].ToString()=“123”)
{
fieldLayout=dic;
打破
}
}

fieldLayout=pageLayout.FirstOrDefault(dic=>dic[“FIELD”]。ToString()=“213”)

LINQ几乎不比
foreach
快,但这超出了本文的范围

var fieldLayout = pageLayout.FirstOrDefault(pl => pl["FIELD"].ToString() == "123");

首先,LINQ并不比foreach循环快

以下是实施方案:

Dictionary<string, object> fieldLayout = pageLayout.Where(x => x["FIELD"].ToString() == "123").FirstOrDefault();
Dictionary fieldLayout=pageLayout.Where(x=>x[“FIELD”].ToString()==“123”).FirstOrDefault();
或者更好:

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

为什么您认为Linq比foreach快?你需要优化这段代码吗?LINQ不比每段都快或慢。是的,我需要优化代码为什么你保留对象而不是字符串?调用ToString()不是最好的选择!应该是
dic[“FIELD”].ToString()
与原始代码类似,因为字典的值类型为object。否则你会做一个参考比较,这是没有用的。我建议只留下第二个。