2016-12-25 305 views
0

我目前遇到了我的搜索結果問題。用戶可以搜索不同的項目,例如類別,類型,價格等。問題是,當我選擇多個類別時,返回的列表不會返回項目。 我有一個視圖通過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));

回答

1

Chnage返回值你的行動來:

public IEnumerable<AdSearchViewModel> GetItemsFromSearch(AdSearchViewModel viewModel) 
+0

這已經是隻是在代碼中沒有顯示,對不起! – Bombebak