2010-05-13 155 views
1

如何動態地生成LINQ查詢:LINQ動態查詢

int[] IDArray = {55, 36}; 

public IQueryable<ContactListView> FindAllContacts(int loggedUserID, int[] IDArray) 
{ 
    var result = (
       from contact in db.Contacts 

       //Start of dynamic part... 
       where 
       contact.UserID == loggedUserID 
       foreach (var id in IDArray) 
       { 
        where contact.UserID == id 
       } 
       // End of dynamic part 

       orderby contact.ContactID descending       
       select new ContactListView 
       { 
        ContactID = contact.ContactID, 
        FirstName = contact.FirstName, 
        LastName = contact.LastName        
       }); 

    return result; 
} 

感謝,

回答

3

你就不能使用Contains?我假設你想要生成一個具有IN子句的查詢。這裏有一個例子:Creating in queries with linq to sql

int[] IDArray = {55, 36}; 

public IQueryable<ContactListView> FindAllContacts(int loggedUserID, int[] IDArray) 
{ 
    var result = (
       from contact in db.Contacts 
       where contact.UserID == loggedUserID 
        && IDArray.Contains(contact.UserID) 
       orderby contact.ContactID descending       
       select new ContactListView 
       { 
        ContactID = contact.ContactID, 
        FirstName = contact.FirstName, 
        LastName = contact.LastName        
       }); 

    return result; 
} 
+0

'&& IDArray.Contains(ID)' - 了'id'並不在此範圍內是否存在?你能更精確些嗎?謝謝 – 2010-05-13 14:20:34

+0

'IDArray.Contains(id)' 應該是 'IDArray.Contains(contact.UserID)' – Toby 2010-05-13 14:23:42

+0

是的,就是這樣!謝謝! – 2010-05-13 14:29:33

2

你可能想where IDArray.Contains(contact.UserID)

+0

是的,就是這樣。謝謝! – 2010-05-13 14:29:12