选择与实体框架中的位置之间的区别

Ani*_*ish 47 .net c# linq entity-framework linq-to-sql

实体框架.Select().Where()实体框架之间有什么区别?例如

return ContextSet().Select(x=> x.FirstName == "John")
Run Code Online (Sandbox Code Playgroud)

VS

ContextSet().Where(x=> x.FirstName == "John")
Run Code Online (Sandbox Code Playgroud)

我何时应该使用.Selectvs .Where

Geo*_*ett 77

Select是一个投影,所以你得到的是x=> x.FirstName == "John"ContextSet()服务器上的每个元素计算的表达式.即大量的真/假值(与原始列表相同的数字).如果你看看select会返回类似的东西IEnumerable<bool>(因为类型x=> x.FirstName == "John"是bool).

Where 过滤结果,返回原始类型的可枚举(无投影).


因此,Select当您想要保留所有结果,但更改其类型(投影它们)时使用.

使用Where时要过滤搜索结果,保持原有的类型

  • 是的,我明白了.我只是不知道为什么人们继续使用像"投影"这样的词语,因为他们可以使用更简单直接的短语,例如"控制返回的内容",甚至"允许开发人员选择返回哪些列".我甚至不知道"投影"是开发人员词典的一部分,更不用说它在这种情况下的含义了."选择你的列[或类属性]". (7认同)
  • 好的,我想我仍然不明白在这种情况下“项目”的含义是什么... (4认同)

SLa*_*aks 21

Where() 是一个过滤器.

Select()选择不同的数据.
您的Select()示例将返回一组布尔值.