Entity Framework中的.Select()和.Where()有什么区别?
.Select()
.Where()
return ContextSet().Select(x=> x.FirstName == "John")
vs
ContextSet().Where(x=> x.FirstName == "John")
什么时候应该使用.Select和.Where?
.Select
.Where
wljmcqd81#
Select是一个投影,所以你得到的是表达式x=> x.FirstName == "John"在服务器上为ContextSet()中的每个元素求值。也就是说,有很多真/假值(与你原来的列表相同的数字)。如果你看一下,select将返回类似IEnumerable<bool>的东西(因为x=> x.FirstName == "John"的类型是bool)。Where过滤结果,返回原始类型的可枚举数(无投影)。因此,当您希望保留所有结果,但更改其类型(投影它们)时,请使用Select。当您想过滤结果时,使用Where,保持原始类型
Select
x=> x.FirstName == "John"
ContextSet()
IEnumerable<bool>
Where
bxpogfeg2#
Where()是过滤器。Select()选择不同的数据段。您的Select()示例将返回一个布尔值集合。
Where()
Select()
2条答案
按热度按时间wljmcqd81#
Select
是一个投影,所以你得到的是表达式x=> x.FirstName == "John"
在服务器上为ContextSet()
中的每个元素求值。也就是说,有很多真/假值(与你原来的列表相同的数字)。如果你看一下,select将返回类似IEnumerable<bool>
的东西(因为x=> x.FirstName == "John"
的类型是bool)。Where
过滤结果,返回原始类型的可枚举数(无投影)。因此,当您希望保留所有结果,但更改其类型(投影它们)时,请使用
Select
。当您想过滤结果时,使用
Where
,保持原始类型bxpogfeg2#
Where()
是过滤器。Select()
选择不同的数据段。您的
Select()
示例将返回一个布尔值集合。