我编写了以下LINQ查询,以返回组列表,然后分别迭代列表。
我只需要带有特定电子邮件的用户组列表。
我相信这可能不是马上。
我可以用更好的方式(性能方面)重写它吗?
var groups = _context.Users.Where(m => m.Email == email)
.Include(g => g.Customer)
.ThenInclude(r => r.CustomerGroups)
.ThenInclude(t => t.Group)
.First().Customer.CustomerGroups;
foreach (var group in groups)
{
var s = group.Group;
//do something
}
最佳答案
如果您只需要CustomerGroup实体和相关的Group实体(正如我在注释部分所解释的那样),则获取其他相关的实体(用户和客户)效率很低。您可以像这样使EF仅获取您感兴趣的实体:
var groups =
(
from user in _context.Users
from customerGroup in user.Customer.CustomerGroups
where user.Email == email
select customerGroup
).Include(cg => cg.Group);
或者,当CustomerGroup不存储任何相关数据时,则仅存在关系:
var groups =
(
from user in _context.Users
from customerGroup in user.Customer.CustomerGroups
where user.Email == email
select customerGroup.Group
);
关于c# - 如何优化LINQ查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52016011/