我知道标题有点复杂,但让我通过解释问题来澄清标题。
As per image I want to filter product name in search textbox. For ex: In search textbox if I enter the oil that in datatable whole data want to show which product name is oil.
对于过滤器,我使用了 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 });
根据代码,我在 datalist 变量中获取完整数据。现在,当我在搜索框中搜索任何产品时,搜索条件将为 true,之后 datalist 值将为 null[如调试代码所示]。
因此,该数据表显示空数据。
为了理解为什么会发生这种情况,我添加了字符串()在类别行的数据列表查询中,即
CategoryName = _Db.Category.Where(z => z.Id == x.Select(p => p.CategoryId).FirstOrDefault()).Select(p => p.Name).toString(),
添加后toString()在这一行中它显示了这一行Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable。但我想要这一行的结果值。为了更清楚,让我们看另一张图片
That oil我想要在搜索条件行中的结果值,即
dataList = dataList.Where(m => m.CategoryName.Contains(searchValue.ToString().ToLower())).ToList();
但现在它显示了这一行Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable代替结果值。