C# 在使用Linq EF时使用多个selectMany语句是否是一种不好的做法?
我有下面的问题,但它似乎是错误的,这可以缩短吗?以下情况是否对性能有不良影响C# 在使用Linq EF时使用多个selectMany语句是否是一种不好的做法?,c#,linq,entity-framework,C#,Linq,Entity Framework,我有下面的问题,但它似乎是错误的,这可以缩短吗?以下情况是否对性能有不良影响 var projectBylineIDs = _neptuneUow.Projects.FindWhere(p => p.ID == 81) .SelectMany(p => p.Batches) .SelectMany(i => i.Items)
var projectBylineIDs = _neptuneUow.Projects.FindWhere(p => p.ID == 81)
.SelectMany(p => p.Batches)
.SelectMany(i => i.Items)
.SelectMany(b => b.ByLines)
.Select(b => b.ID)
.ToList();
不要认为这是一个坏习惯,如果你需要这个,就去做吧 性能如何。表演是一个极其敏感的话题。 取决于代码执行的上下文,它可能非常有害,但执行起来却非常甜蜜 可能会问你自己的问题是:你真的需要所有这些信息吗,在你需要按顺序变平之后?或者在服务器上运行一些StoredProcedure,并准备好显示结果
希望这有帮助。这可能会产生许多SQL查询,请看这个问题:感谢您的回答,我只需要批ID,例如最后一个select.select(b=>b.ID),是否可以在不使用所有其他select语句的情况下获得它?@xerxes:没有其他方法1)重新构造类以便于访问该属性2)如果没有,在某种程度上(linq或否)您需要遍历内部列表才能到达该字段。所以,选择更合适的方式,以满足您的需求(性能、记忆效率、您可以在这方面花费的时间…)