阅读问题here和here给了我一些洞察情况,并且它似乎使用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
};
我删除了两个AsEnumerables时,我提到了错误。 (我没有试过只删除一个)。战利品和pollcards本身就是LINQ语句吗? (一个IQueryable和一个Collection ) –
Andy
2011-03-15 11:39:25
@Andy:是的,事实上'spoils'是一个内存中的集合,这绝对是相关的。我认为这是另一个数据库查询。我不知道有什么方法可以将数据库中的一半数据加入进来。 “原本”来自数据库吗? – 2011-03-15 11:42:02
战利品是由2个querrys创建的,其中一个为上一个10的tops10,另一个为结果进行联合,然后通过该联盟填充集合。我不知道为什么我们不返回工会并将其从Iqueryable转换为集合。 (将返回IQuerryable解决对AsEnumerables的需求?) – Andy 2011-03-15 11:47:43