2017-03-16 33 views
0

我有一個包含一些對象的列表。我需要在該列表中執行linq以獲得另一個列表說「子列表」,其條件如下: 1)如果項目狀態爲「完成」並且在5天內完成日期,則包括到子列表中 2)如果項目狀態是「待定」和到期日期少於7天,包括到子列表中我們如何過濾Linq中的多個條件列表

我怎麼能用一個linq查詢來實現? 感謝您提前給予的支持

+2

請顯示您的嘗試。目前還不清楚你在這裏有什麼樣的問題 –

回答

1

您可以使用IEnumerable.Where方法與謂詞有你的條件。因爲我不知道你的對象模型,我會做出一個顯示爲例:

Public Class SomeObject 
    Public Property Status As String 
    Public Property Complete As DateTime? 
    Public Property DueDate As DateTime? 

    Public Sub New(strStatus As String, dteComplete As DateTime?, dteDueDate As DateTime?) 
     Status = strStatus 
     Complete = dteComplete 
     DueDate = dteDueDate 
    End Sub 
End Class 

一些數據人口:

Dim lstObjects As New List(Of SomeObject) 

lstObjects.Add(New SomeObject("Complete", DateTime.Now.AddDays(-1), DateTime.Now.AddDays(-1))) 
lstObjects.Add(New SomeObject("Pending", Nothing, DateTime.Now.AddDays(5))) 
lstObjects.Add(New SomeObject("Pending", Nothing, DateTime.Now.AddDays(10)))  

這是你可以查詢它(返回兩個結果):

Dim sublist As List(Of SomeObject) = lstObjects.Where(Function(target As SomeObject) 
                  Dim bolMatch As Boolean = False 

                  If (target.Status = "complete" AndAlso 
                   target.Complete > DateTime.Now.Date.AddDays(-5)) OrElse 
                  (target.Status = "pending" AndAlso 
                   target.DueDate < DateTime.Now.Date.AddDays(7)) Then 
                   bolMatch = True 
                  End If 

                  Return bolMatch 
                 End Function).ToList() 
+0

很好......它的工作.......... Thankuuu @NoAlias – isree

+0

我很高興能幫上忙。如果答案有用,請投票。 – N0Alias