簡體   English   中英

Linq到通用列表C#數據過濾問題

[英]Linq to Generic list C# Data Filtering issue

我在C#代碼中執行linq查詢時遇到問題。 我想排除具有jobChangeTypeId取消UnallocateDelete但將它們帶入結果集中的數據。

foreach (EmployeejobAudit empjobAudit in list)
{
     int iEmployeeServiceId = empjobAudit.EmployeeServiceId;

     PushNotificationData.jobAuditRow[] jobAuditList = empjobAudit.jobAuditList;

     var jobCallQuery = (from job in jobAuditList
                         where ((from dc in dataset.jobCall select dc.jobId).Contains(job.jobId)) && 
                        ( job.jobChangeTypeId != (int) Common.jobChangeTypeId.Unallocate  || job.jobChangeTypeId != (int) Common.jobChangeTypeId.Delete)                                   
                         select job).Distinct();

     if (jobCallQuery.Any())
     {
         foreach (var item in jobCallQuery)
         {
             System.Diagnostics.Debug.WriteLine("jobId {0}  Employee ServiceID {1} jobChange Type ID {2}", item.jobId, item.EmployeeServiceId, item.jobChangeTypeId);
         }
     }
}

如果您想同時排除兩者,則它是AND而不是OR

foreach (EmployeejobAudit empjobAudit in list)
{
     int iEmployeeServiceId = empjobAudit.EmployeeServiceId;

     PushNotificationData.jobAuditRow[] jobAuditList = empjobAudit.jobAuditList;

     var jobCallQuery = (from job in jobAuditList
                         where ((from dc in dataset.jobCall select dc.jobId).Contains(job.jobId)) && 
                        ( job.jobChangeTypeId != (int) Common.jobChangeTypeId.Unallocate && job.jobChangeTypeId != (int) Common.jobChangeTypeId.Delete)                                   
                         select job).Distinct();

     if (jobCallQuery.Any()) //Useless because the following foreach will do it for you, but you can test if != null 
     {
         foreach (var item in jobCallQuery)
         {
             System.Diagnostics.Debug.WriteLine("jobId {0}  Employee ServiceID {1} jobChange Type ID {2}", item.jobId, item.EmployeeServiceId, item.jobChangeTypeId);
         }
     }
}

您正在|| 代替&& 問題是使用|| 這兩個表達式之一將始終為真,因此將其包括在內。

這個:

job.jobChangeTypeId != (int) Common.jobChangeTypeId.Unallocate  
|| job.jobChangeTypeId != (int) Common.jobChangeTypeId.Delete

需要更改為:

job.jobChangeTypeId != (int) Common.jobChangeTypeId.Unallocate  
&& job.jobChangeTypeId != (int) Common.jobChangeTypeId.Delete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM