AsEnumerable()对LINQ实体有什么影响?
阅读这里和这里的问题给了我一些洞察情况,似乎使用AsEnumerable是内存消耗。 有没有更好的方法来做到这一点LINQ和现在的做法,是出来的数据可靠吗?
删除AsEnumerable结果“本地序列不能用于除Contains运算符以外的查询运算符的LINQ to SQL实现”。
var results = from p in pollcards.AsEnumerable() join s in spoils.AsEnumerable() on new { Ocr = p.OCR, fileName = p.PrintFilename } equals new { Ocr = s.seq, fileName = s.inputFileName } where p.Version == null orderby s.fileOrdering, s.seq select new ReportSpoilsEntity { seq = s.seq, fileOrdering = s.fileOrdering, inputFileName = s.inputFileName, Ocr = p.OCR, ElectorName = p.ElectorName };
AsEnumerable()
实际上是对IEnumerable<T>
,它使成员分辨率findEnumerable
成员而不是Queryable
。 当你想强制查询的一部分以SQL(或类似的方式)运行时,通常会使用它,其余部分则使用LINQ to Objects运行。
看到我的Edulinq博客文章了解更多信息。
现在你实际上有两个对AsEnumerable
调用。 我可以看到如何删除第一个,但不是第二个可能会导致问题,但你有尝试删除两个?
var results = from p in pollcards join s in spoils on new { Ocr = p.OCR, fileName = p.PrintFilename } equals new { Ocr = s.seq, fileName = s.inputFileName } where p.Version == null orderby s.fileOrdering, s.seq select new ReportSpoilsEntity { seq = s.seq, fileOrdering = s.fileOrdering, inputFileName = s.inputFileName, Ocr = p.OCR, ElectorName = p.ElectorName };
使用AsEnumerable将中断查询,并将“外部”作为linq-to-objects而不是Linq-to-SQL。 实际上,对于两个表都运行“select * from …”,然后执行连接,where子句filter,sorting和投影客户端。
在entity framework中使用AsEnumerable时要小心。 如果你的表有很多的数据,你的查询变得很慢,因为查询第一个加载数据和应用where子句,sorting和投影。
- 如何用entity framework通过id删除一个对象
- cascade = {“remove”} VS orphanRemoval = true VS ondelete =“CASCADE
- 在Python中将XML / HTML实体转换为Unicodestring
- 在JPA中禁用caching(eclipselink)
- 如何使用entity framework只更新一个字段?
- entity framework – 有没有一种方法来自动加载没有包含()的子实体?
- “LINQ to Entities”,“LINQ to SQL”和“LINQ to Dataset”有什么区别?
- 我怎样才能得到在entity framework中插入实体的Id?
- entity framework回滚并删除错误的迁移