2017-12-06 4 views
0

プロキシタイプのオブジェクトのリストをフィルタリングしようとしています。ここにそのプロパティがあります。ダイナミッククエリを使用したフィルタリスト?

国名が付いたCheckListBoxがあります。国がチェックされている場合は、フィルタ結果に含める必要があります。

私はハードコードされたLINQのlikesoを使用することができます知っている:

Dim result = proxies.Where(Function(p) p.Country = "USA" OR p.Country = 
    "Russia") 

しかし、私のクエリは動的であることから、言うがある場合、ユーザーフォームにチェックされる国に依存し、どのように私はこれについて行くことができ、50私の結果に含める国は?私はPredicateBuilderについて読んだことがありますが、Statusプロパティでフィルタリングしていて、Status = ValidまたはStatus = Unknownのプロキシを含める場合のように、論理ORを含む例は見つかりませんでしたか?私は、ユーザーが国を選択することができますかわからないので、私はSelectedCountriesを使用している

Dim countries As String() = SelectedCountries 
Dim result = proxies.Where(Function(p) countries.Contains(p.Country)) 

答えて

3

あなたが収集とContainsを使用することができます。しかし、私はあなたがその配列(またはリスト)を作成することを知っていると確信しています。

はさらに:

私は例ステータス=有効かステータス=不明 ため、動的または文を必要とします。この私が result = result.Whereない proxies.Whereを使用することに注意して、様々な チェックボックス

Dim allowedStatuses = SelectedStatuses 
result = result.Where(Function(p) allowedStatuses.Contains(p.Status)) 

のユーザーの選択に依存しています。 Whereを複数連結することができます。これは、最初のWhereOrElseを使用するのと同じです。私の意見では、これはここでもっと読みやすくなります。

+0

こんにちは、ありがとうTim。それは確かに、私の質問の一部を解決します。たとえば、Status = ValidまたはStatus = Unknownのように、動的OR文が必要な場合はどうでしょうか。これは、フィルタリングフォーム上の様々なチェックボックスのユーザ選択に依存する。あなたが私の質問の最後の部分で私を助けることができるなら、私は必ずこれを答えにします。 –

+1

@DavidStampher:見てください –

+0

@TimSchemlterまさに私が探していたものです。ありがとう、トン。 (27秒と私は答えとしてマークすることができます...) –

関連する問題