我需要从 LINQ 的连接中获取 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 循环来提取模型类。我只是想知道是否有更好的方法来进行转移。
ADD: 为了更清楚,我需要从recT传输数据吗?类型到 T?Model 类型。T?Model 类型是为 MVC 数据显示和格式化而修饰的模型类型。我要避免的一件大事是代码中多个位置的相同长的属性分配列表。