如何筛选一个简单的LINQ查询并将其用于更复杂的LINQ询问

本文关键字:LINQ 询问 查询 用于 复杂 简单 何筛选 筛选 一个 | 更新日期: 2023-09-27 18:28:50

我的一个函数中有这个逻辑,但它对数据库进行了3次往返。如何将查询转换为只对数据库进行一次查询?

var saisonTouristiqueId = 1;
var currentSaison = this.appContext.SaisonTouristiques.FirstOrDefault(x => x.SaisonTouristiqueId == saisonTouristiqueId);
var nextSaison = (from saison in this.appContext.SaisonTouristiques
                  where saison.DebutSaison > currentSaison.FinSaison
                  orderby saison.DebutSaison
                  select saison).FirstOrDefault();
if (nextSaison != null)
{
    var forfaits = from forfait in this.appContext.Forfaits
                   where forfait.ComposantForfaits.Any(x => x.SaisonTouristiqueId == nextSaison.SaisonTouristiqueId)
                   select forfait;
    return forfaits.ToList();
}

如何筛选一个简单的LINQ查询并将其用于更复杂的LINQ询问

在后续查询中仅使用FirstOrDefault,以允许推迟所有执行。

var saisonTouristiqueId = 1;
var currentSaison = this.appContext.SaisonTouristiques
    .Where(x => x.SaisonTouristiqueId == saisonTouristiqueId);
var nextSaison = from saison in this.appContext.SaisonTouristiques
                    where saison.DebutSaison > currentSaison.FirstOrDefault().FinSaison
                    orderby saison.DebutSaison
                    select saison;
var forfaits = from forfait in this.appContext.Forfaits
                where forfait.ComposantForfaits.Any(x => x.SaisonTouristiqueId == nextSaison.FirstOrDefault().SaisonTouristiqueId)
                select forfait;
return forfaits.ToList();