【发布时间】:2013-07-18 05:42:43
【问题描述】:
给定一个看起来像这样的实体:
public ICollection<UserActivity> Activities { get; set; }
public ICollection<UserTraining> Training { get; set; }
并希望根据 ID 数组过滤用户,即调用以下方法:
public User[] GetUsers(int[] activityIds, int[] trainingIds)
编写上述方法实现最有效的方法是什么。如果我传入一个非数组整数,那将是微不足道的,但我想知道编写它以避免多次数据库调用的最佳方法。
我正在使用 Linq to Entities。
该操作应返回具有任何活动或培训 ID 的用户,而不是所有用户。
【问题讨论】:
-
使用 Contains 是我发现的最佳方式。这是以前的一篇文章,很好地涵盖了它:stackoverflow.com/questions/2369022/…
-
@jfrankcarr 谢谢,但 Contains 不包含数组的重载。
-
Contains 有一个 IEnumerable/Array 扩展。 System.Linq 将其引入。
-
任务是获取所有参与给定活动或培训的用户吗?如果是这样,
UserActivity和UserTraining上是否都有 User 属性 -
@DavidColwell 不,这些对象没有返回给用户的属性,因为它是多对多的;操作应该是 OR,而不是 AND
标签: c# performance linq