1

VB.Net 2.0 セルフ サービス コードを生成した LLBLGen Pro プロジェクトがあります。

生成されたコードを使用した検索に基づいて、カスタム構造のリストを返す関数があります。

この関数にフィールド名と値のディクショナリを提供し、それぞれに対して新しい述語式を検索に追加したいと思います。

フィールド名を表す辞書内の文字列を確認し、述語式を追加するエンティティフィールドを特定するにはどうすればよいですか?

コードサンプル

Dim dbFiles As New AllFilesCollection
Dim dbFilter As New PredicateExpression

If Not String.IsNullOrEmpty(ClientName) Then
  dbFilter.Add(New PredicateExpression(AllFilesFields.ClientMenuName = ClientName))
End If

If Not String.IsNullOrEmpty(SearchText) Then
  dbFilter.Add(New FieldLikePredicate(AllFilesFields.ClientReference, "%" & SearchText & "%"))
  dbFilter.AddWithOr(New FieldLikePredicate(AllFilesFields.Cmsnumber, "%" & SearchText & "%"))
End If

For Each Filter As KeyValuePair(Of String, String) In Filters

  'Custom code here to determine the field to add a filter for.

Next

dbFiles.GetMulti(dbFilter)
4

2 に答える 2

1

この質問は LLBLGEN の質問のように見えるため無視されたと思いますが、おそらくそうではありません。

すべての列がわかっている場合:

  • ジップ

次に、文字列を次のような値に変換するだけです...

For Each Filter As KeyValuePair(Of String, String) In Filters
    Select Case filter.Key
        Case "City"
            dbFilter.Add(New PredicateExpression(AllFilesFields.City = filter.Value))
        Case "State"
            dbFilter.Add(New PredicateExpression(AllFilesFields.State = filter.Value))
        Case "Zip"
            dbFilter.Add(New PredicateExpression(AllFilesFields.Zip = filter.Value))
    End Select
Next
于 2009-09-16T00:00:34.217 に答える
0

次のようなこともできます。

Dim fields As IEntityFields = new AllFieldsEntityFactory().CreateFields();
For Each Filter As KeyValuePair(Of String, String) In Filters
    dbFilter.Add((EntityField) fields[Filter.Key] == Filter.Value);
Next
于 2009-10-26T18:29:04.323 に答える