2009-07-02 72 views

回答

3

您可以使用Contains檢查每個UserID是否在您擁有的陣列中。

int[] userIDs = ... 
var users = db.Users.Where(u => userIDs.Contains(u.UserID)); 
+0

這就是答案。 LINQtoSQL表達式中使用的IENumerable.Contains()方法將生成一個SQL IN()函數。 – andy 2009-07-02 01:55:44

0

試試這個:

using(var db=new MyDataContext()) 
{ 
    var users=db.Users.Where(u=>userIds.Contains(u.Id)); 
} 
1

如果你想避免設定操作和用戶鏈接手術室相反,你可以使用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. 

} 

看看博客文章來了解它是如何工作的。這基本上是在將每個用戶標識傳遞給WHERE子句之前爲列表中的每個用戶標識創建一個長鏈接的OR。

相關問題