私はいくつかのオブジェクトを持つリストを持っています。私はそのリストの中でlinqを実行し、次の条件を持つ別のリストを "サブリスト"とする必要があります 1)アイテムのステータスが "完了"で、5日間で完了した日付の場合、サブリスト に含める2) "保留中"であり、期日が7日未満の場合は、サブリストに含めますLinqで複数のif条件でリストをフィルタリングするには
これを単一のlinqクエリでどのように実現できますか? 事前にサポートいただきありがとうございます
私はいくつかのオブジェクトを持つリストを持っています。私はそのリストの中でlinqを実行し、次の条件を持つ別のリストを "サブリスト"とする必要があります 1)アイテムのステータスが "完了"で、5日間で完了した日付の場合、サブリスト に含める2) "保留中"であり、期日が7日未満の場合は、サブリストに含めますLinqで複数のif条件でリストをフィルタリングするには
これを単一のlinqクエリでどのように実現できますか? 事前にサポートいただきありがとうございます
IEnumerable.Whereメソッドは、条件を満たす述語で使用できます。私はあなたのオブジェクトモデルは、私は1つの例として表示するように作ってあげるか分からないので:
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()
あなたが試したことを示してください。あなたがここにどのような問題があるのかはっきりしない –