如何使用intersect优化linq查询?

如何使用intersect优化linq查询?,linq,optimization,query-optimization,Linq,Optimization,Query Optimization,当priceList很小时,查询执行得很快,但如果priceList包含五个以上的元素,则查询速度非常慢 if(!filters.Price.All && !filters.Price.IsEmpty()) { var priceList = filters.Price.GetRangeList(); foreach (var price in priceList) { decimal startPrice = decimal.Parse(

当priceList很小时,查询执行得很快,但如果priceList包含五个以上的元素,则查询速度非常慢

if(!filters.Price.All && !filters.Price.IsEmpty())
{
    var priceList = filters.Price.GetRangeList();
    foreach (var price in priceList)
    {
        decimal startPrice = decimal.Parse(price[0]);
        decimal endPrice = decimal.Parse(price[1]);


        var priceResult = from deal in query
                          where (deal.DiscountPrice >= startPrice && deal.DiscountPrice <= endPrice)
                          select deal;
        if(priceResult.Count() != 0)
        priceResults = (priceResults == null) ? priceResult : priceResult.Union(priceResults);
    }


    query = query.Intersect(priceResults);
}
if(!filters.Price.All&&!filters.Price.IsEmpty())
{
var priceList=filters.Price.GetRangeList();
foreach(价格表中的var价格)
{
decimal startPrice=decimal.Parse(price[0]);
decimal endPrice=decimal.Parse(price[1]);
var priceResult=来自查询中的交易

其中(deal.DiscountPrice>=startPrice&&deal.DiscountPrice我可能误解了您的代码,但据我所知,Intersect操作的结果将与priceResults具有相同的对象列表-因此完全不需要Intersect(因此删除它将是一个非常优化的过程)。:-)


除非priceResults列表在输入此代码块之前包含内容,否则它将只包含查询列表中的对象,因此查找两者之间的交集将始终生成priceResults列表。

什么是
query
?什么是
priceResults
?这是Linq2Sql、Linq2Entities、Linq2Objects吗?