Ладно ... я рассматривал большинство тем, относящихся к L2E, и что-то похожее на оператор IN SQL, и хотя то, что я видел в процессе обучения, не сильно приближает меня к решению проблемы.
Я знаю, что с EF4 доступен .Contains.Вот пример того, который я уже использую, который работает как чемпион для фильтрации на основе строкового массива:
public static IQueryable<TblIssueDetail> FilterByIssueName(this IQueryable<TblIssueDetail> source, string[] issueName)
{
if (null != issueName)
source = issueName.Aggregate(source, (current, word) => current.Where(x => x.IssueName.Contains(word)));
return source;
}
Однако, когда я пробую подобную технику с int [], он падает наего лицо.
public static IQueryable<TblIssueDetail> FilterByProviderAffected(this IQueryable<TblIssueDetail> source, int[] providerAffected)
{
if (null != providerAffected)
source = providerAffected.Aggregate(source,
(current, item) =>
current.Where(x => x.ProviderAffected.Equals(item)));
return source;
}
Что я получаю при отладке: «Невозможно создать постоянное значение типа« System.Object ». Только примитивные типы (« такие как Int32, String и Guid ») поддерживаются в этом контексте. "когда я нажимаю на фильтр с int [] в нем.
Я просто упускаю что-то глупое и очевидное, или я, кстати, слишком далеко от базы?