LINQ динамический запрос - PullRequest
1 голос
/ 13 мая 2010

Как динамически генерировать запрос 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;
}

Спасибо,
Ile

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

Разве вы не можете просто использовать Contains? Я предполагаю, что вы хотите сгенерировать запрос с предложением IN. Вот пример этого: Создание в запросах с 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;
}
2 голосов
/ 13 мая 2010

Вы, вероятно, хотите where IDArray.Contains(contact.UserID)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...