Я получаю сообщение об ошибке, см. Ниже, когда я пытаюсь сгенерировать список класса MappedItem.Вкратце приведенный ниже пример кода пытается найти товары по категориям, диапазону дат и артикулу.У меня есть требование, чтобы пользователь мог вводить список SKU, разделенных запятыми, и поиск должен найти любой продукт, чей SKU начинается с одного из SKU, введенных пользователем.Когда я запускаю код, я получаю.
Локальная последовательность не может использоваться в реализации операторов запросов LINQ to SQL, кроме оператора Contains ().
Сокращенная последовательность:
Преобразуйте разделенные запятыми строки SKU в список строк.
string sku = TextSKU.Text;
List<string> skuList = sku.Split(new char[] { ',' }).ToList();
Определите в другом месте кода класс, который будет принимать результаты поиска.
public class MappedItem
{
public string ItemDescription { get; set; }
public int ItemCount { get; set; }
public MappedItem()
{
}
public MappedItem(string itemDescription, int itemCount)
{
ItemDescription = itemDescription;
ItemCount = itemCount;
}
}
Вотзапрос, по которому я генерирую свои результаты из
List<MappedItem> widgetItems = (from c1 in db.CCRCodes
join pac in db.widgetAssignedCodes on c1.code_id equals pac.code_id
join ph in db.widgetHistories on pac.history_id equals ph.history_id
where ph.contact_dt.Value.Date >= startDate && ph.contact_dt.Value.Date <= endDate &&
(string.IsNullOrEmpty(baanCatFam) || ph.baan_cat_family_code == baanCatFam) &&
(string.IsNullOrEmpty(baanCat) || ph.baan_cat_code == baanCat) &&
(string.IsNullOrEmpty(baanSubCat) || (ph.baan_sub_cat_code == baanSubCat)) &&
(string.IsNullOrEmpty(sku) || skuList.All(sl => ph.product_mod.StartsWith(sl)))
group c1 by c1.code_desc into ct
select new MappedItem
{
ItemDescription = ct.Key.ToUpper(),
ItemCount = ct.Count()
}).OrderByDescending(m => m.ItemCount)
.ToList();
Я полагаю, что виновником является строка кода, которую я извлек и показал ниже.
skuList.All(sl => ph.product_mod.StartsWith(sl))
Это идентифицирует все запускающиеся skusс элементом из skuList, который получен из разделенных запятыми списков skus, введенных пользователем.У меня вопрос, что является причиной этой ошибки, и, учитывая примеры кода, что мне делать, чтобы обойти их.