错误' Int32 ToInt32(System.String)'

时间:2014-10-20 06:40:26

标签: asp.net-mvc-4

我添加了以下操作,以便将产品归入cat.id。

[HttpPost]
public ActionResult OnlineHome(string CategoryId)
{
  OnlineDataModel dm = new OnlineDataModel();
  dm.CatagoryData = new List<category>();
  dm.ProductData = new List<product>();
  dm.CatagoryData = db.categories.ToList();
  //dm.ProductData = (from p in db.products where p.CategoryID == Convert.ToInt32(CategoryId) select p).ToList() ;
  var data= db.products.Where(d => d.CategoryID == Convert.ToInt32(CategoryId)).ToList();
  return View(dm);
}

我收到以下错误

  

LINQ to Entities无法识别方法&#39; Int32 ToInt32(System.String)&#39;方法,&gt;此方法无法转换为商店表达式。

需要一个解决方案。

2 个答案:

答案 0 :(得分:2)

解决方案1:

首先尝试声明Integer变量:

int iCategoryId = Convert.ToInt32(CategoryId);

然后将您的代码更新为:

var data= db.products.Where(d => d.CategoryID == iCategoryId).ToList();

解决方案2(推荐):

确保您的操作收到一个整数并修改变量的类型:

public ActionResult OnlineHome(int CategoryId)

然后以相同的方式更新您的代码:

var data = db.products.Where(d => d.CategoryID == CategoryId).ToList();

随意为两种解决方案添加您自己的演员验证。

答案 1 :(得分:1)

这样做。

  int catId = Convert.ToInt32(CategoryId);
  var data = db.products.Where(d => d.CategoryID == catId).ToList();