我有一个包含一些对象的列表。我需要在该列表中执行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()
请显示您的尝试。目前还不清楚你在这里有什么样的问题 –