如何筛选一个简单的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();
}
在后续查询中仅使用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();