给定一个如下所示的实体:
public ICollection<UserActivity> Activities { get; set; }
public ICollection<UserTraining> Training { get; set; }
并希望根据ID数组过滤用户,即调用以下方法:
public User[] GetUsers(int[] activityIds, int[] trainingIds)
编写上述方法实现的最有效方法是什么。如果我传入一个非数组整数,那将是微不足道的,但我想知道编写它的最佳方法,以避免多次数据库调用。
我正在使用Linq to Entities。
该操作应该返回具有任何活动或培训ID的用户,而不是所有活动或培训ID。
答案 0 :(得分:2)
public User[] GetUsers(int[] activityIds, int[] trainingIds)
{
return _context.Users
.Where(u => u.Activities.Any(a => activityIds.Contains(a.Id)) ||
u.Training.Any(t => trainingIds.Contains(t.Id)))
.ToArray();
}