2

当 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);
    }
4

2 回答 2

9

您不能在 linq 查询中使用 Convert.ToInt32 。Linq 有自己的语法,不识别外部方法。

您必须将要查找的变量提取到 C# 中,对其进行转换,然后将其用作另一个查询中的变量。或者,如果您有权访问数据库,则可以将两个 categoryID 都设为整数。类似的字段应该属于同一类型是有道理的。

希望有帮助!

于 2012-05-24T13:48:42.887 回答
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
             };
于 2012-05-24T13:55:31.143 回答