У меня есть 2 сущности: клиент и учетная запись, где клиент может иметь несколько учетных записей.В учетной записи у меня есть поле «PlatformTypeId», которое мне необходимо обуславливать (несколько значений), среди прочих критериев.Я использую лямбда-выражения, чтобы построить запрос.Вот фрагмент:
var customerQuery =
from c in context.CustomerSet.Include("Accounts")
select c;
if (criterions.UserTypes != null && criterions.UserTypes.Count() > 0)
{
List<short> searchCriterionsUserTypes =
criterions.UserTypes.Select(i => (short)i).ToList();
customerQuery = customerQuery
.Where(LinqTools.BuildContainsExpression<Customer, short>(
c => c.UserTypeId, searchCriterionsUserTypes));
}
// Other criterions, including the problematic platforms condition (below)
var customers = customerQuery.ToList();
Я не могу понять, как построить условие платформ учетных записей:
if (criterions.Platforms != null && criterions.Platforms.Count() > 0)
{
List<short> searchCriterionsPlatforms =
criterions.Platforms.Select(i => (short)i).ToList();
customerQuery = customerQuery.Where(c => c.Accounts
.Where(LinqTools.BuildContainsExpression<Account, short>(
a => a.PlatformTypeId, searchCriterionsPlatforms)));
}
(BuildContainsExpression - метод, который мы используем для построения выражения длямножественный выбор)
Я получаю ошибку компиляции:
Аргументы типа для метода 'System.Linq.Enumerable.Where (System.Collections.Generic.IEnumerable, System.Func) 'не может быть выведено из использования.Попробуйте явно указать аргументы типа.
Есть идеи, как это исправить?
Спасибо,
Nir.