Использование Contains для выполнения оператора IN внутри и предложения LINQ с использованием Entity Framework

Я пытаюсь динамически построить оператор LINQ where, но у меня возникают проблемы с попыткой написать оператор IN с использованием метода contains в списке.

Вот мой код:

IQueryable<Customer> customers =
                (from cus in objectCustomer
                 select cus); \\objectCustomer is all customers

//List of customer ID's passed into the method.
string[] sCustomerIDs = (string[])DictionaryParameters["CustomerIDs"];
customers = customers.Where(c => c.Assets.Any(a => sAssetIDs.Contains(a.UN_Asset.ToString())));

return customers.Cast<T>().ToList();

При выполнении строки возврата я получаю следующую ошибку: LINQ to Entities не распознает метод метода System.String ToString(), и этот метод не может быть преобразован в выражение хранилища.

Любые идеи? Если я изменю IQueryable на IEnumerable для выполнения запроса, но мне нужно использовать IQueryable, поскольку я использую Entity Framework, а IEnumerable возвращает все записи до того, как мой фильтр сработает.

Огромное спасибо.


person user1131661    schedule 05.01.2012    source источник


Ответы (1)


Пожалуйста, попробуйте это:

string[] sCustomerIDs = (string[])DictionaryParameters["CustomerIDs"];    

IQueryable<Customer> customers =   
            (from cus in objectCustomer  
             where sCustomerIDs.Contains(cus.*[Your Field]*)
             select cus);   
person Arian    schedule 05.01.2012