将阵列添加到列表中
问题描述:
我目前遇到了我的搜索结果问题。用户可以搜索不同的项目,例如类别,类型,价格等。问题是,当我选择多个类别时,返回的列表不会返回项目。 我有一个视图通过ajax提交GET请求,数据正确加载到传递给我的方法返回匹配结果的mvc操作方法中。类别作为数组发送到viewModel。 将阵列添加到列表中
public IEnumerable<AdSearchViewModel> GetItemsFromSearch(AdSearchViewModel viewModel)
{
var result = from a in _dbContext.AdTable
select new AdSearchViewModel
{
Id = a.Id,
Name = a.Name,
CategoryId = a.CategoryId,
TypeId = a.TypeId,
Brand = a.Brand,
Price = a.Price,
Description = a.Description
};
if (viewModel != null)
{
if (viewModel.Id.HasValue)
result = result.Where(x => x.Id == viewModel.Id);
if (viewModel.SelectedCategory != null && viewModel.SelectedCategory.Length > 0)
{
result = viewModel.SelectedCategory.Aggregate(result, (current, item) => current.Where(x => x.CategoryId == item));
}
if (!string.IsNullOrEmpty(viewModel.Name))
result = result.Where(x => x.Name.Contains(viewModel.Name));
if (!string.IsNullOrEmpty(viewModel.Brand))
result = result.Where(x => x.Brand.Contains(viewModel.Brand));
if (viewModel.PriceFrom.HasValue)
result = result.Where(x => x.Price >= viewModel.PriceFrom);
if (viewModel.PriceFrom.HasValue)
result = result.Where(x => x.Price <= viewModel.PriceTo);
}
//TODO: return newest
return result;
}
正确的项目被加载,当我只点击一个类别。我尝试使用数组的foreach(仍然没有运气),但Visual Studio提出了称为错误的集合函数({“方法只能在Type.IsGenericParameter为true的Type上调用。”})。
在IsGenericParameter属性为false的类型上获取DeclaringMethod属性将引发InvalidOperationException。 - MSND文档
添加匹配结果与所选类别的正确方法是什么?
我找到了解决方案! 这为我工作: result = result.Where(x => viewModel.SelectedCategory.Any(y => y == x.CategoryId));
答
Chnage返回值你的行动来:
public IEnumerable<AdSearchViewModel> GetItemsFromSearch(AdSearchViewModel viewModel)
这已经是只是在代码中没有显示,对不起! – Bombebak