在LINQ to Entities中将字符串转换为Int?

时间:2011-09-13 09:28:40

标签: entity-framework linq-to-entities

我必须将srting值转换为Int,但实际上Linq对实体不支持。

对于以下代码,我发现了错误。不知道如何将字符串转换为int。

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)', 并且此方法无法转换为商店表达式。

2 个答案:

答案 0 :(得分:4)

在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;

答案 1 :(得分:-1)

不,他们不会。这样想吧; ToString()和parse()都是对象的方法。由于linq-to-entities尝试将您的linq表达式转换为sql,因此它们不可用。 如果需要在查询中执行此操作,则可能使用Cast,它应该在linq-to-entities [1]中可用。对于ToString,您可以使用SqlFunctions.StringConvert()[2]。

  1. http://msdn.microsoft.com/en-us/library/bb301460.aspx
  2. http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.aspx