在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();
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 匹配