0

別のテーブルへのキーとして 2 つのフィールドの連結を使用するサード パーティのデータベースにクエリを実行しようとしています。次の linq-to-sql クエリを使用しようとしましたが、「LINQ to Entities はメソッド 'System.String Concat(System.String[])' メソッドを認識しません。このメソッドはストアに変換できません」というランタイム エラーが発生しました。表現。'

Dim result = From records In db.TableA
    Join records2 In db.TableB
    On records.FieldA + "*" + records.FieldB Equals records2.KeyField

これを機能させるにはどうすればよいですか?

4

1 に答える 1

0

データベースを制御できる場合。最も簡単な解決策は、2 列のキーを単一の列として生成する計算値を追加し、それを他のテーブルと直接結合することです。これは、適切なキーのようになります。これにより、値を簡単に永続化し、必要に応じてパフォーマンス目的でインデックスを追加することもできます (SQL Server の場合、他の DB については不明です)。

サードパーティのデータベースのテーブルを変更するという考えが気に入らない場合は、プログラムがテーブルとは別の計算列で使用するビューでテーブルをラップすることを選択できます。

于 2013-05-23T23:04:44.933 に答える