我必须将string
值转换为int
,但似乎LINQ to Entities不支持此功能。
对于以下代码,出现错误。
var query = (from p in dc.CustomerBranch
where p.ID == Convert.ToInt32(id) // here is the error.
select new Location()
{
Name = p.BranchName,
Address = p.Address,
Postcode = p.Postcode,
City = p.City,
Telephone = p.Telephone
}).First();
return query;
LINQ to Entities无法识别方法'
Int32 ToInt32 (System.String)
',并且该方法无法转换为存储表达式。
在LINQ之外进行转换:
var idInt = Convert.ToInt32(id);
var query = (from p in dc.CustomerBranch
where p.ID == idInt
select new Location()
{
Name = p.BranchName,
Address = p.Address,
Postcode = p.Postcode,
City = p.City,
Telephone = p.Telephone
}).First();
return query;
不,他们不会。这样想吧; ToString()和parse()都是对象上的方法。由于linq-to-entities尝试将您的linq表达式转换为sql,因此这些不可用。如果需要在查询中执行此操作,则可以使用Cast(在linq-to-entities [1]中可用)进行转换。对于ToString,可以使用SqlFunctions.StringConvert()[2]。