C# 如何筛选一个简单的LINQ查询并将其用于更复杂的LINQ查询
我的一个函数中有这个逻辑,但它对数据库有3次往返。如何将查询转换为只对数据库进行一次查询C# 如何筛选一个简单的LINQ查询并将其用于更复杂的LINQ查询,c#,.net,linq,linq-to-entities,C#,.net,Linq,Linq To Entities,我的一个函数中有这个逻辑,但它对数据库有3次往返。如何将查询转换为只对数据库进行一次查询 var saisonTouristiqueId = 1; var currentSaison = this.appContext.SaisonTouristiques.FirstOrDefault(x => x.SaisonTouristiqueId == saisonTouristiqueId); var nextSaison = (from saison in this.appContext.S
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();
我想你可以用join@COLDTOLD考虑到他在做什么,我不明白你怎么能这么做。也许交叉连接我没有意识到他的两个查询都在一张表上