C# Linq2SQL检查项是否为空
foreach(新DataAccess.IncidentRepository()中的var事件。GetItems()。其中( i=>(开始日期==null | | i.IncidentDate>=startDate) &&(endDate==null | | i.IncidentDateC# Linq2SQL检查项是否为空,c#,linq-to-sql,C#,Linq To Sql,foreach(新DataAccess.IncidentRepository()中的var事件。GetItems()。其中( i=>(开始日期==null | | i.IncidentDate>=startDate) &&(endDate==null | | i.IncidentDatevar incident in new DataAccess.IncidentRepository().GetItems()。其中( i=>i.IncidentDate>=startDate &&i.Incide
var incident in new DataAccess.IncidentRepository().GetItems()。其中(
i=>i.IncidentDate>=startDate
&&i.IncidentDate i.IncidentDate>=开始日期
&&i.IncidentDate i.PlantId==PlantId);
foreach(事件中的var事件){
// ...
}
新DataAccess.IncidentRepository()中的var事件。GetItems()。其中(
i=>i.IncidentDate>=startDate
&&没有意义的i.IncidentDate i.PlantId用于数据库PlantId是传递到方法中的参数。因此基本上,如果PlantId==null,则不应将i.PlantId添加到where子句中。我也添加了该选项。两者实际上是相同的。刷新以查看。在SQL中,我将在USerId=ISNULL(@USerId,USerId)时执行此操作它应该可以工作。链接Where子句没有问题。它们的行为类似于和。
var incident in new DataAccess.IncidentRepository().GetItems().Where(
i => i.IncidentDate >= startDate
&& i.IncidentDate <= endDate
&& i.ShiftId == shiftId
&& i.ProcessAreaId == processAreaId
&& (plantId == null || i.PlantId == plantId)))
var incidents = new DataAccess.IncidentRepository().GetItems().Where(
i => i.IncidentDate >= startDate
&& i.IncidentDate <= endDate
&& i.ShiftId == shiftId
&& i.ProcessAreaId == processAreaId));
if (plantId != null)
incidents = incidents.Where(i => i.PlantId == plantId);
foreach (var incident in incidents) {
// ...
}
var incident in new DataAccess.IncidentRepository().GetItems().Where(
i => i.IncidentDate >= startDate
&& i.IncidentDate <= endDate
&& i.ShiftId == shiftId
&& i.ProcessAreaId == processAreaId
&& object.Equals(i.PlantId, plantId)))