gpt4 book ai didi

c# - 如何在 LINQ to Entities Join 中使用 Convert.Int32() 方法?

转载 作者:行者123 更新时间:2023-12-04 04:42:44 24 4
gpt4 key购买 nike

我的 LINQ to Entities 查询有问题,我正在连接四个表,但是下面的连接列的两个表没有相同的数据类型是查询。

var qry = (from i in dc.INTERNETDATAs
join c in dc.COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE
join b in dc.BENEFITS on c.COVERID equals b.COVERID
join p in dc.POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
where i.DATELOADED >= startDate
&& i.DATELOADED < endDate
&& i.CAMPAIGNTYPE == campaignType
&& c.COVERTYPEID == coverTypeId
select i).DefaultIfEmpty();

在上面的代码中第一次加入
join c in dc.COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE

给出以下错误

InnerException: System.NotSupportedException Message=LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression. Source=System.Data.Entity



我怎样才能做到这一点?

最佳答案

假设 i.COVERTYPE 是一个字符串,避免使用 Convert.ToInt32()。使用 SqlFunctions.StringConvert而是在 *c.COV_TYPE*​​ 上。它来自 System.Data.Objects.SqlClient ,并且可以像这样调用:

var qry = (from i in dc.INTERNETDATAs
join c in dc.COVERS on i.COVERTYPE equals SqlFunctions.StringConvert(c.COV_TYPE)
join b in dc.BENEFITS on c.COVERID equals b.COVERID
join p in dc.POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
where i.DATELOADED >= startDate
&& i.DATELOADED < endDate
&& i.CAMPAIGNTYPE == campaignType
&& c.COVERTYPEID == coverTypeId
select i).DefaultIfEmpty();

关于c# - 如何在 LINQ to Entities Join 中使用 Convert.Int32() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18656360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com