Я знаю, что название несколько сложнее, но позвольте мне очистить название, объяснив проблему.
По изображению я хочу отфильтровать название товара в текстовом поле поиска. Например: в текстовом поле поиска, если я введу масло, в целых данных, для которых требуется дата, нужно указать, какое название продукта является маслом.
Для фильтра я использовал запрос linq, вот мой код,
var dataList = (from x in query
select new
{
PartName = _Db.Part.Where(z => z.Id == x.Select(p => p.PartId).FirstOrDefault()).Select(p => p.Name),
ManufacturerName = _Db.Manufacture.Where(z => z.Id == x.Select(p => p.ManufacturerId).FirstOrDefault()).Select(p => p.name),
CategoryName = _Db.Category.Where(z => z.Id == x.Select(p => p.CategoryId).FirstOrDefault()).Select(p => p.Name),
Pcs = x.Sum(o =>o.Pcs) -
(from m in _Db.MaterialRecord
join s in _Db.ServiceJob on m.ServiceJobId equals s.Id
where m.pid == x.Select(p => p.PartId).FirstOrDefault()
select m).Sum(z => z.Qty),
Weight = _Db.Purchase.Where(p => p.Weight == x.Select(s => s.Weight).FirstOrDefault()).Select(a => a.Weight).FirstOrDefault(),
WeightType = x.Select(p => p.WeightTypeId).FirstOrDefault() > 0 ?((WeightType)x.Select(p => p.WeightTypeId).FirstOrDefault()).ToString() :"",
}).ToList();
//Search
if (!string.IsNullOrEmpty(searchValue))
dataList = dataList.Where(m => m.CategoryName.Contains(searchValue.ToString().ToLower())).ToList();
//Returning Json Data
return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data });
Согласно коду, я получаю целые данные в переменной списка данных. Теперь, когда я буду искать любой продукт в окне поиска, условие поиска будет истинным, и после этого значение списка данных будет нулевым [как показано при отладке кода].
Итак, отсюда из этой таблицы данных показаны нулевые данные.
Для понимания того, почему это происходит, я добавляю tostring () в запрос к списку данных строки категории, т.е.
CategoryName = _Db.Category.Where(z => z.Id == x.Select(p => p.CategoryId).FirstOrDefault()).Select(p => p.Name).toString(),
После добавления toString () в этой строке отображается эта строка Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable . Но я хочу значение результата этой строки. Для большей наглядности посмотрим на другое изображение
![enter image description here](https://i.stack.imgur.com/Udf7h.png)
Это масло значение результата, которое я хочу в строке условия поиска, т.е.
dataList = dataList.Where(m => m.CategoryName.Contains(searchValue.ToString().ToLower())).ToList();
но сейчас в нем отображается эта строка Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable вместо значения результата.