Использование Contains для выполнения оператора IN внутри и предложения LINQ с использованием Entity Framework - PullRequest
0 голосов
/ 05 января 2012

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

Вот мой код:

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 возвращает все записи до того, как мой фильтр будет выполнен.

Большое спасибо.

1 Ответ

2 голосов
/ 05 января 2012

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

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

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