c#如何筛选一个简单的 LINQ 查询并在更多的假 LINQ 查询中使用它

标签: Linq .Net C#
发布时间: 2017/2/28 23:15:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有这种逻辑在我的功能之一,但却 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();
}

解决方法 1:

只有使用 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();
官方微信
官方QQ群
31647020