AsEnumerable()对LINQ实体的影响是什么?

And*_*ndy 19 c# linq entity enumerable

这里这里阅读问题让我对这种情况有所了解,似乎使用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
                          };
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 27

AsEnumerable()有效地铸造到IEnumerable<T>,这使得成员分辨率发现的成员Enumerable,而不是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
              };
Run Code Online (Sandbox Code Playgroud)


Kri*_*erA 5

使用AsEnumerable将中断查询并将"外部部分"作为linq-to-objects而不是Linq-to-SQL.实际上,您正在为两个表运行"select*from ...",然后执行连接,where子句过滤,排序和投影客户端.