使用Linqtosql,如何根据UserID数组获取用户集合

时间:2009-07-02 00:54:29

标签: asp.net-mvc linq-to-sql

使用linq到sql,如果我有一个我想要获取的UserID数组,我将如何获得User对象的集合?

3 个答案:

答案 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));
}