2010-05-13 6 views
1

Comment générer dynamiquement requête LINQ:LINQ dynamique requête

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; 
} 

Merci,
Ile

Répondre

3

Tu ne peux pas simplement utiliser Contains? Je suppose que vous voulez générer une requête qui a une clause IN. Il y a un exemple de cela ici: 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)' - la 'id' n'existe pas dans ce champ? Pourriez-vous s'il vous plaît être plus précis? Merci –

+0

'IDArray.Contains (id)' doit être 'IDArray.Contains (contact.UserID)' – Toby

+0

Oui, c'est tout! Je vous remercie! –

2

Vous voulez probablement where IDArray.Contains(contact.UserID)

+0

oui, c'est tout. Merci! –