在下面的查询中,在 where 之前或之后包含 include 之间是否存在任何差异。 如果它们相同,是否有首选?
DBContext.Items.Where(i => i.ItemCategory == "A")
.Include(c = c.ItemCategories)
.Include(g = g.ItemGroups).ToList();
对比
DBContext.Items.Include(c = c.ItemCategories)
.Include(g = g.ItemGroups)
.Where(i => i.ItemCategory == "A")
.ToList();
最佳答案
没有区别。
原因是您正在创建一个表达式,它在枚举 表达式时执行。
在您的情况下,它在调用 ToList
时被枚举。
底层提供者,在本例中为 Entity Framework LINQ 提供者,将获取表达式并找出它需要提供的 SQL。由于 LINQ 提供程序控制着它的执行,它可以使用表达式并以任何需要的顺序查看它,以便正确地对底层 SQL 数据存储执行查询。
关于linq - .Include() 在 linq 语句中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908870/