当convert.i尝试int.Parse(),SqlFunction和EdmFunction时,我得到LINQ to Entities Int32 ToInt32(System.String),但问题仍然存在。
例外:
System.NotSupportedException: LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression
代码:
try
{
ModelEntities me = new ModelEntities();
var query = from p in me.Products
join c in me.ProductCategories
on Convert.ToInt32(p.CategoryId) equals c.CategoryId
select new
{
p.ProductTitle,
c.CategoryName
};
rptProducts.DataSource = query;
rptProducts.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
答案 0 :(得分:9)
您不能在linq查询中使用Convert.ToInt32。 Linq有自己的语法,无法识别外部方法。
您必须将要查找的变量提取到C#,转换它,并将其用作另一个查询中的变量。或者,如果您有权访问数据库,则可以同时创建categoryIDs。有意义的是类似的字段应该是相同的类型。
希望有所帮助!
答案 1 :(得分:4)
我建议将c.CategoryId转换为像这样的字符串
var query = from p in me.Products
from c in me.ProductCategories
let categoryId = me.ProductCategories.Take(1).Select(x => c.CategoryId).Cast<string>().FirstOrDefault()
where p.CategoryId == categoryId
select new
{
p.ProductTitle,
c.CategoryName
};