首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ to Entities无法识别方法“System.Object get_Item(System.String)”Epicor10

LINQ to Entities无法识别方法“System.Object get_Item(System.String)”Epicor10
EN

Stack Overflow用户
提问于 2016-06-22 04:00:37
回答 1查看 408关注 0票数 0

我有一段代码在Epicor10中转换为C#。板载编译器允许此代码,但当它从我收到的API触发时:

LINQ to Entities无法识别方法“”System.Object get_Item(System.String)“”方法,并且此方法无法转换为存储表达式。“”

我把它缩小到where子句的这一部分:

代码语言:javascript
复制
&& string.Compare((string)Part_Row["ShortChar01"] ,(string)"None",true)!=0

它是以下代码段的一部分:

代码语言:javascript
复制
 var ttRcvDtlRow = ttRcvDtl_iterator;
    foreach (var Part_iterator in (from Part_Row in Db.Part
                                   where string.Compare(Part_Row.Company, ttRcvDtlRow.Company, true) == 0
                                   && string.Compare(Part_Row.PartNum, ttRcvDtlRow.PartNum, true) == 0
                                   /*&& string.Compare((string)Part_Row["ShortChar01"] ,"None",true)!=0*/
                                                                     && string.Compare((string)Part_Row["ShortChar01"] ,(string)"None",true)!=0 
                                           select Part_Row))

关于如何修复的建议。我从其他帖子中了解到,这种情况发生在b/c linq正在将此发送到SQL中,并且在翻译(或类似的东西)时出现了问题

索引器?

代码语言:javascript
复制
Erp.Tables.Part Part;
foreach (var ttRcvDtl_iterator in (from ttRcvDtl_Row in ttRcvDtl
                               where (string.Equals(ttRcvDtl_Row.RowMod, IceRow.ROWSTATE_ADDED, StringComparison.OrdinalIgnoreCase) || string.Equals(ttRcvDtl_Row.RowMod, IceRow.ROWSTATE_UPDATED, StringComparison.OrdinalIgnoreCase))
                               && String.IsNullOrEmpty(ttRcvDtl_Row.LotNum)
                               select ttRcvDtl_Row))

谢谢,JM

EN

回答 1

Stack Overflow用户

发布于 2016-06-22 04:09:50

“我从其他帖子中了解到,这种情况会发生b/c linq正在将此信息发送到SQL,翻译过程中存在问题。”

这正是正在发生的事情。EF不知道如何将string.Compare转换为SQL方法。

代码语言:javascript
复制
&& string.Compare((string)Part_Row["ShortChar01"] ,(string)"None",true)!=0

应该是

代码语言:javascript
复制
&& ((string)Part_Row["ShortChar01"]).ToLower() != "none"

根据您的SQL Server设置,您甚至不需要ToLower(),因为您可以在默认情况下将所有字符串比较设置为不区分大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37953550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档