linq 实体框架中Select和Where的区别

gblwokeq  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(232)

Entity Framework中的.Select().Where()有什么区别?

return ContextSet().Select(x=> x.FirstName == "John")

vs

ContextSet().Where(x=> x.FirstName == "John")

什么时候应该使用.Select.Where

wljmcqd8

wljmcqd81#

Select是一个投影,所以你得到的是表达式x=> x.FirstName == "John"在服务器上为ContextSet()中的每个元素求值。也就是说,有很多真/假值(与你原来的列表相同的数字)。如果你看一下,select将返回类似IEnumerable<bool>的东西(因为x=> x.FirstName == "John"的类型是bool)。
Where过滤结果,返回原始类型的可枚举数(无投影)。
因此,当您希望保留所有结果,但更改其类型(投影它们)时,请使用Select
当您想过滤结果时,使用Where,保持原始类型

bxpogfeg

bxpogfeg2#

Where()是过滤器。
Select()选择不同的数据段。
您的Select()示例将返回一个布尔值集合。

相关问题