我有一個包含一些對象的列表。我需要在該列表中執行linq以獲得另一個列表說「子列表」,其條件如下: 1)如果項目狀態爲「完成」並且在5天內完成日期,則包括到子列表中 2)如果項目狀態是「待定」和到期日期少於7天,包括到子列表中我們如何過濾Linq中的多個條件列表
我怎麼能用一個linq查詢來實現? 感謝您提前給予的支持
我有一個包含一些對象的列表。我需要在該列表中執行linq以獲得另一個列表說「子列表」,其條件如下: 1)如果項目狀態爲「完成」並且在5天內完成日期,則包括到子列表中 2)如果項目狀態是「待定」和到期日期少於7天,包括到子列表中我們如何過濾Linq中的多個條件列表
我怎麼能用一個linq查詢來實現? 感謝您提前給予的支持
您可以使用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()
請顯示您的嘗試。目前還不清楚你在這裏有什麼樣的問題 –