LINQ からの結合から 2 つのレコード タイプを取得する必要があります。どちらにも約2ダースの列があり、2つのテーブルのそれぞれから受け取る型にMVCモデル型が定義されているため、結合から単一の融合型を作成しないことをお勧めします。
これまでのところ、次のようなものがあります。
var qry = from recT1 in db.Tbl1
join recT2 in db.Tbl2 on recT1.colA equals recT2.colA
where recT1.colA != null
select new { MyT1 = recT1, MyT2 = recT2 };
それから、私は次のような滑らかなことをしようとしていました:
public class T1and2
{
public T1Model T1 { get; set; }
public T2Model T2 { get; set; }
}
T1and2[] aT12 = qry.Select( obj => new T1and2()
{
T1 = new T1Model(obj.MyT1), //-- these ctors defined separately
T2 = new T2Model(obj.MyT2)
})
.ToArray();
しかし、これは私に実行時の状態をNotSupportedException
与えます"Only parameterless constructors are supported."
次のステップは、単純に for ループを作成してモデル クラスを抽出することです。何か良い方法で乗り換えができないか調べてみました。
追加: より明確にするために、recT からデータを転送する必要がありますか? 型を T?Model 型に変換します。T?Model 型は、MVC データの表示と書式設定のために装飾されたモデル型です。そして、私が避けようとしている重要なことの 1 つは、コード内の複数の場所でプロパティ割り当ての同じ長いリストを作成することです。