在Lambda中的Select和Where之间进行选择

本文关键字:之间 行选 选择 Where Lambda 中的 Select | 更新日期: 2023-09-27 18:09:18

之间有什么区别

var UR = context.UserResearches.Select(c => c.SessionID == SessionID).First();
var UR = context.UserResearches.Where(c => c.SessionID == SessionID).First();

在Lambda中的Select和Where之间进行选择

Select将把一个序列映射到另一个序列—在对每个项调用时返回一个包含lambda表达式结果的序列:

var UR = context.UserResearches.Select(c => c.SessionID == SessionID).First();

这将得到一个类似{ False, False, False, True, False, False }的序列,然后返回该序列中的第一个项目。


另一方面,Where将过滤序列,只返回lambda表达式求值为True:的那些元素

var UR = context.UserResearches.Where(c => c.SessionID == SessionID).First();

这将得到一个UserResearch对象序列,其中仅包含SessionID == SessionID返回该序列中第一个项目的对象。

注意:Linq使用惰性求值,因此First将导致它在找到第一个元素后停止对序列的其余部分求值

Where

将选择所有与SessionID 匹配的UserResearch

Select

将创建一个布尔结果列表。该列表中的每个布尔值都将用于每个UserResearch,如果它们与SessionID 匹配