如何在LINQ's WHERE子句中添加IF语句
本文关键字:子句 WHERE 添加 语句 IF LINQ | 更新日期: 2023-09-27 17:52:42
var deliverableitems = (from tbl in GetContext.Deliverables.AsEnumerable()
where tbl.AutoAuditNotes != Constants.PUBLISH_AUDIT_STRING && tbl.AutoAuditNotes != string.Empty
select new CMChangeLogModel
{
RevisionDateTime = tbl.RevisionDateTime,
RevisionUser = tbl.RevisionUser,
Note =
(
tbl.AutoAuditNotes.Contains("Created") ? string.Format("Created Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Changed") ? string.Format("Edited Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("has changed") ? string.Format("Edited Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Added") ? string.Format("Edited Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Removed") ? string.Format("Edited Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Edited") ? string.Format("Edited Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Deleted") ? string.Format("Deleted Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) :
tbl.AutoAuditNotes.Contains("Restored") ? string.Format("Restored Work Product '{0}'", hyperlinktemplate.Replace(pageidtemplate, tbl.DeliverableId.ToString()).Replace(pagetitletemplate, tbl.Title)) : "Unknown"
),
Status = "AuditNote",
CM_PageId = tbl.CM_DeliverableId,
VMajor = tbl.VMajor,
VRevision = tbl.VRevision,
PageType = PageTypeEnum.Deliverable.ToString()
}).ToList();
我有上面的代码和一个布尔变量isLatest_
。如果这个变量的值为真,那么我需要在"where"子句中添加另一个条件,例如:where tbl.AutoAuditNotes != Constants.PUBLISH_AUDIT_STRING && tbl.AutoAuditNotes != string.Empty && if (isLatest_) { // another condition }
这是可能的吗?由于
以及HimBromBeere的答案,也可以这样实现
where tbl.AutoAuditNotes != Constants.PUBLISH_AUDIT_STRING
&& tbl.AutoAuditNotes != string.Empty
&& (!isLatest_ || anotherCondition)
也许有人认为这更有可读性,但这是个人喜好的问题。
最后一个&&
部分是true
,如果isLatest
是false
或(如果isLatest_
是true
)取决于anotherCondition
。
当然,如果isLatest_
也是false
,则只需使用三元运算符并附加true
。true
确保当前面所有条件都满足时测试通过。
where tbl.AutoAuditNotes != Constants.PUBLISH_AUDIT_STRING
&& tbl.AutoAuditNotes != string.Empty
&& isLatest_ ? anotherCondition : true
使用inline-if:
statement ? valueIfTrue : valueIfFalse
添加到您的位置:&& (!isLatest_ ? true : /* Add your condition here */)
from tbl in GetContext.Deliverables.AsEnumerable()
where tbl.AutoAuditNotes != Constants.PUBLISH_AUDIT_STRING
&& tbl.AutoAuditNotes != string.Empty
&& (isLatest_ ? true : /* Add your condition here */)
select new CMChangeLogMode