Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用Linq EF时使用多个selectMany语句是否是一种不好的做法?_C#_Linq_Entity Framework - Fatal编程技术网

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或否)您需要遍历内部列表才能到达该字段。所以,选择更合适的方式,以满足您的需求(性能、记忆效率、您可以在这方面花费的时间…)