C# Linq2SQL检查项是否为空

C# 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

foreach(新DataAccess.IncidentRepository()中的var事件。GetItems()。其中( i=>(开始日期==null | | i.IncidentDate>=startDate) &&(endDate==null | | i.IncidentDate
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)))