0

这种语法中哪一种在数据之间搜索时具有更好的性能和速度?

第一种选择:

this.Message = pageContentsli
    .Where(m => m.PName == "Message")
    .First()
    .ContentValue;

第二种选择:

  foreach (PageContentsModel pc in pageContentsli)
  {
     if (pc.PName == "Message"){
        this.Message = pc.ContentValue;
        break;
      }
  }
4

2 回答 2

2

在继续比较之前,您应该First 像这样移动里面的条件:

this.Message = pageContentsli.First(m => m.PName == "Message").ContentValue;

就性能而言,您应该看不到任何差异。然而,在可读性方面,修改后的 LINQ 版本胜出。

于 2013-07-02T10:34:07.943 回答
0

首先让我解释一下这两种语法的实际作用。

在第一种语法 ( where) 中,它一个一个地处理元素,如果它捕获到m.PName="Message",它会将请求的值返回给this.Message,然后处理停止。

第二种语法 ( foreach) 中,它一个一个地处理元素,当它捕获到 时m.PName="Message",它会将值分配给this.Message并再次开始处理元素的其余部分。

因此,即使找到了值,第二个语法也不会停止,因此它比第一个语法需要更多的时间来完成

于 2013-07-02T10:38:39.557 回答