0

给定一个看起来像这样的实体:

 public ICollection<UserActivity> Activities { get; set; }
 public ICollection<UserTraining> Training { get; set; }

并希望根据 ID 数组过滤用户,即调用以下方法:

public User[] GetUsers(int[] activityIds, int[] trainingIds)

编写上述方法实现的最有效方法是什么。如果我传入一个非数组整数,那将是微不足道的,但我想知道编写它以避免多个数据库调用的最佳方法。

我正在使用 Linq 到实体。

该操作应返回具有任何活动或培训 ID 的用户,而不是所有用户。

4

1 回答 1

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();
}
于 2013-07-19T10:34:33.313 回答