gpt4 book ai didi

c# - nHibernate Criteria Query OR 或 IN?

转载 作者:行者123 更新时间:2023-11-30 22:49:36 25 4
gpt4 key购买 nike

我需要使用 nHibernate Criteria 重新创建一个查询。这个查询有一个非常难看的 where 子句。

((t.Disposition_CD)='ac' Or    
(t.Disposition_CD)='cc' Or
(t.Disposition_CD)='Co' Or
(t.Disposition_CD)='SF' Or
(t.Disposition_CD)='SC' Or
(t.Disposition_CD)='OR' Or
(t.Disposition_CD)='SV' Or
(t.Disposition_CD)='RI' Or
(t.Disposition_CD)='WN' Or
(t.Disposition_CD)='NC' Or
(t.Disposition_CD)='DN' Or
(t.Disposition_CD)='WT' Or
(t.Disposition_CD)='MA' Or
(t.Disposition_CD)='TO' Or
(t.Disposition_CD)='OC'))

所以,我从这里开始

IList leadList = 
session.CreateCriteria(typeof(Lead)).Add(Expression.In("CallDisposition",
new string[] {"AC","CC" })).List();

Lead 上的 Property 是一个 CallDisposition 对象,当我尝试执行此操作时,出现了一个 Unknown entity class: System.String 错误。 CallDisposition 数组就是它要查找的内容。

基本上,我正在寻找的是满足原始​​查询的所有或条件的潜在客户列表。任何建议都是有帮助的。

最佳答案

在不知道实体属性的情况下很难发表评论。

如果 CallDisposition 属性是具有 CallDispostionCode 属性的 CallDisposition 实体,那么您可以执行如下操作:

IList leadList = session.CreateCriteria(typeof(Lead))
.Add(Expression.In("CallDisposition.CallDispostionCode",
new string[] {"AC","CC" })).List();

或者,如果 CallDisposition 有一个 Id,您可以将您的第二个解决方案修改为如下所示:

DetachedCriteria criteria = DetachedCriteria.For<CallDisposition>()
.Add(Expression.In("CallDispostionCode", new string[] { "AC", "CC" })
.SetProjection(Projections.Property("CallDisposition.Id"));

IList leadList = session.CreateCriteria(typeof(EmcLead))
.Add(Subqueries.PropertyIn("CallDisposition.Id", criteria)).List();

这将只是一个使用子选择的数据库命中。

关于c# - nHibernate Criteria Query OR 或 IN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068024/

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