有什么区别:
var UR = context.UserResearches.Select(c => c.SessionID == SessionID).First();
var UR = context.UserResearches.Where(c => c.SessionID == SessionID).First();
答案 0 :(得分:4)
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使用lazy evaluation,因此First
将导致它在找到第一个元素后停止评估序列的其余部分。
答案 1 :(得分:0)
Where
将选择与SessionID匹配的所有UserResearch
Select
将创建一个布尔结果列表。该列表中的每个bool值将用于每个UserResearch,如果它们与SessionID匹配