【发布时间】:2015-03-06 12:20:45
【问题描述】:
最近我遇到了修复错误的代码,如下所示。 很难理解它并使更改看起来也有风险。 有没有简单的方法来分解这样的查询,即德摩根定律或以不同的方式重写。
SomeReturnType xyz()
{
return (from m in this.context.tblMessages
where m.SystemActionID.HasValue &&
(userID == null || m.RecipientID == null || m.RecipientID == userID) &&
m.TargetUserType == userType &&
(
(territoryID.HasValue && !m.TerritoryID.HasValue) ||
(!territoryID.HasValue && !m.TerritoryID.HasValue) ||
(territoryID.HasValue && m.TerritoryID.HasValue && territoryID.Value == m.TerritoryID.Value)
) &&
(
(regionID.HasValue && !m.RegionID.HasValue) ||
(!regionID.HasValue && !m.RegionID.HasValue) ||
(regionID.HasValue && m.RegionID.HasValue && regionID.Value == m.RegionID.Value)
) &&
(
(teamID.HasValue && !m.TeamID.HasValue) ||
(!teamID.HasValue && !m.TeamID.HasValue) ||
(teamID.HasValue && m.TeamID.HasValue && teamID.Value == m.TeamID.Value)
) &&
m.SystemActionData == additionalData &&
(!completed.HasValue || m.IsSystemActionCompleted == completed.Value)
select m).FirstOrDefault();
} //function xyz ends
【问题讨论】:
标签: c# .net linq conditional