jri*_*zzo 19 c# linq entity-framework
我知道几个LINQ语句将导致EF评估并将结果从DB返回到内存. .ToList()是一个.有没有人有完整的声明列表?
不确定......
.SingleOrDefault()
.Union()
Run Code Online (Sandbox Code Playgroud)
编辑:希望我能接受所有这些答案.大家好消息!
Dav*_*d L 32
这是一个很长的名单.他们归结为
Aggregate
All<TSource>
Any
Average
Contains
Count
ElementAt<TSource>
ElementAtOrDefault<TSource>
Empty<TResult>
First
FirstOrDefault
Last
LastOrDefault
LongCount
Max
Min
SequenceEqual
Single
SingleOrDefault
Sum
ToArray<TSource>
ToDictionary
ToList<TSource>
ToLookup
Run Code Online (Sandbox Code Playgroud)
其余的是延迟流式执行或延迟非流式执行.
根据您的问题,SingleOrDefault()立即执行Union()是延迟流执行.
D S*_*ley 12
任何返回一个具体的对象或数据结构(Count,Sum Single,First,ToList,ToArray,等等)立即被评估,因此SingleOrDefault当然不会.
凡是返回IQueryable<T>(Select,GroupBy,Take)将被推迟(这样操作可以链接),因此Queryable.Union将推迟.
凡是返回IEnumerable<T>会也被推迟,但随后的查询将在LINQ到对象,所以后续操作将不被转换为SQL来完成.(Empty是一个例外,因为没有什么要推迟 - 它只返回一个空集合)