是指国际贸易术语和计算机术语。
是最小订货量(minimumord
使用系统
使用
使用
使用系统。文本
命名空间控制台应用程序5
{
班级计划
{
静态voidmain(string[]args)
{
控制台。writ
c#iqueryable和ienumerable的区别使用ef查询数据时,我们经常使用linqtosql,linqtoobject,
查询返回的结果有两种类型:iqu:queryable和enumerable。
在中,参数接收表达式类型并返回iqueryable接口。
公共静态iqueryablelttsourcegtwherelttsourcegt(thisiqueryablelttsourcegtsource,expressiontfuncltttsource,boolgttgt谓词)公共静态iqueryablelttsourcegtwhelttsourcegt(thisiqueryablelttsourcegtsource,expressiontfuncltttsource,boolgttgt谓词)在中,该参数接收一个谓词表达式,即一个委托。
公共静态ienumerablelttsourcegtwherelttsourcegt(thisienumerablettsourcegtsource,funcltsource,boolgtpredict)publicstaticienumerabletsourcegt(thisienumerabletsource,funcltsource,boolgtpredict)那么在使用linqto对象查询数据时,根据传递的参数不同,会返回不同的类型。
1.1.where条件接收表达式并返回iqueryable接口。
2.2.where条件接收谓词表达式(委托)并返回ienumerable接口。
那么什么时候用iqueryablelttgt,什么时候用ienumerablelttgt呢?
谓词表达式是委托。一旦委托被调用,它将被立即执行,并且执行结果将被保存在内存中。
是一个表达式,它存储拼接的表达式树,直到最终在运行时执行。
那么我们在ef中根据条件查询数据的时候,就不应该一次性把数据加载到本地内存中,然后在本地内存中进行过滤。如果数据量很大,就会崩溃。
我们需要组合表达式,然后提交给数据库执行并返回查询结果。
(每次执行where查询操作符时,iqueryprovider都会为我们创建一个新的iqueryablelttgt。当调用asenumerable()方法时,它实际上不接受值,而是
得到了一个ienumerable,所以ef在查询数据时不应该在筛选数据之前取ienumerable。只有在执行tolist方法时,才会调用迭代器getenumerator()来获取值。当实际取值时,将执行iqueryprovider中的execute方法。(解析表达式,然后执行以获得结果))
这是iqueryable的延迟加载。
在linqquery的方法体中执行查询后可以返回的查询结果有三种,分别是count、single和tolist。
是返回的查询结果的总数,常用于增加或修改时判断数据是否重复。
只能返回单个数据,查询结果为单个问题时没有问题。但是一旦查询结果为空或者有两个以上的查询结果,就会报错,无法移动项目卡片。
是要查询的数据列。表格式,当有多条数据,需要查找一条数据时,只能通过查询结果[n]来查找数据。数据,而且单个查询结果只能找到该数据。数据。