将LINQ中的字符串转换为int的实体?

问题描述 投票:4回答:2

我必须将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)',并且该方法无法转换为存储表达式。

entity-framework linq-to-entities
2个回答
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
投票

不,他们不会。这样想吧; 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
© www.soinside.com 2019 - 2024. All rights reserved.