LINQ 中是否推迟了 FirstOrDefault?

pap*_*zzo 3 .net c# linq

考虑这个声明:

StandardLookUpList analysisSport = lookupItem.Where(w => w.Code == Constants.Sport).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

代码将analysisSport多次引用。

该语句会被多次评估吗?

如果它会被多次评估是一种让它评估一次的方法吗?

就像你可以ToList()让 LINQ 立即评估一次。

Dav*_*idG 6

FirstOrDefaultToList就它只枚举一次而言,它与可枚举具有相同的效果。

唯一需要关注多重枚举的时候是,当你有一个可枚举时就够有趣了!由于FirstOrDefault返回一个具体的对象(当然也可以是 null),因此没有什么可枚举的。

另一个潜在的陷阱是analysisSportare 的任何子属性,IEnumerable根据它们的底层类型,它们可能会被多次枚举。