我遇到了以(...)。ToList()。AsQueryable()结尾的linq查询。我知道分别使用.ToList()和.AsQueryable()。但是,如果将两者结合起来,会产生什么结果呢?我们什么时候需要合并它们?我希望这个问题不是太过转储的问题。提前致谢。

第一个查询:

Dim costAmounts = (From t In model.OrderTrades
Join o In model.Orders On t.OrdNum Equals o.OrdNum
Where o.ClientCode = clientNumber And o.BookDate = sysrec.ETicketsBookDate
Group t By t.Buy, t.OrdNum Into Amount = Sum(t.BuyAmount) _
Select OrdNum = OrdNum, Currency = Buy, SellAmount = Amount).ToList().AsQueryable()


第二个查询:

 Dim orders = (From a In costAmounts _
                    Group Join s In settlements On s.Currency Equals a.Currency _
                        And s.OrdNum Equals a.OrdNum Into amounts = Group _
                    From g In amounts.DefaultIfEmpty _
                    Where g Is Nothing OrElse a.SellAmount - g.Paid <> 0 _
                    Select OrdNum = a.OrdNum Distinct).ToList()

最佳答案

您永远不需要将两者结合起来。

AsQueryable可以为您提供懒惰的评估功能,而ToList则完全无效。

因此,LINQ查询被强制由ToList评估,然后,内存中列表被转换为IQueryable,以便允许...对其进行查询。而不是构造查询并仅根据需要获取结果。

08-06 01:19