使用linq到sql,如果我有一个我想要获取的UserID数组,我将如何获得User对象的集合?
答案 0 :(得分:3)
您可以使用Contains检查每个UserID是否在您拥有的数组中。
int[] userIDs = ...
var users = db.Users.Where( u => userIDs.Contains( u.UserID ) );
答案 1 :(得分:1)
如果您想避免使用SET操作和用户链接OR,您可以使用PredicateBuilder来帮助您。
它是这样的:
var userIDs = new[] { 1, 2, 3, 4, 5 };
// build multiple OR expressions
var filter = PredicateBuilder.False<User>();
foreach (var id in userIDs) {
filter = filter.Or(x => x.UserID == id);
}
// fetch data
using (var db = new TheDataContext()) {
var users = db.Users.Where(filter);
// wham! - we have users now.
}
查看博客文章,了解其工作原理。这基本上为列表中的每个用户id创建一个长链接OR,然后将其传递给WHERE子句。
答案 2 :(得分:0)
试试这个:
using(var db=new MyDataContext())
{
var users=db.Users.Where(u=>userIds.Contains(u.Id));
}