まず、これはレガシーアプリケーション用です。したがって、私は根本的に論理を変更することはできません。Linq Queryable - 関係のない2つのテーブルへの結合
私は、関係のない2つのテーブルを持つデータベースを持っています。私はこれを変更するかどうか尋ねましたが、私はできないと言われました。
あなたが見ることができるようにこれらのテーブルは
Create Table T1
[doc_id] [int] NOT NULL, -- Primary Key
[customer_acc_no] [varchar](16) NULL,
[gcompany] [varchar](30) NULL,
....
extra fields
とテーブル
Create Table T2
[UserURN] [int] NOT NULL, -- All three fields make up
[AccountNumber] [varchar](20) NOT NULL, -- the primary key
[Company] [varchar](50) NOT NULL,
....
extra fields
として記述することができ、異なるフィールド名ですが、彼らはあまりにも異なる長さを持っていないだけ。
私はRepositoryとUnitOfWorkパターンを使用しています。これまで私は以下をコード化することができました:
private IRepository<T1> _t1Repository;
private IRepository<T2> _t2Repository;
これらはコンストラクタ内に移入されます。
次のコードを使用して、クエリ可能なリポジトリを取得します。
var retVal = _t1Repository.Queryable();
これから、次の結合を追加しようとしています。
from q in T1
join w in T2
on new { X1 = q.gcompany, X2 = q.Customer_acc_no }
equals new { X1 = w.Company, X2 = w.AccountNumber }
私はそれはのラインに沿っているだろうと考えています:
var query = T1.GroupJoin(T2,
c => c.gcompany,
o => o.Company,
(c, result) => new Result(c.doc_id, result))
.GroupJoin(T2,
c => c.Customer_acc_no,
o => o.AccountNumber ,
(c, result) => new Result(c.doc_id, result));
しかし、私はすべての試みは、これまでのVisual Studio内のエラーで終わるようわかりません。
ただ、すべての3つのフィールドは、1つのキーを作る場合、あなたはそれらのフィールドを含む新しいクラスを作成したクラスのカスタム比較子を作成することができ、アイデアを売り込みます。 – RandomStranger
あなたは私がすべてのものに新しいものとして説明してもらえますか?Linq – gilesrpa
[this](http://stackoverflow.com/questions/634826/using-an-object-as-a-generic-dictionary-key)を参照します。 ) 質疑応答。クラスを辞書のキーとして使うことについて話していますが、あなたのケースに該当すると確信しています。 – RandomStranger