我有两个表,其模式是在:LINQ的多连接查询
表1: -
ID int
first_name string
last_name string
表2: -
ID int
Address1
Address2
我有一个视图模型如下,其中我我使用Linq.Join()将这两个表中的数据连接到第三个表中,如下所示: -
public class VM_JoinData:INotifyPropertyChanged
{
public int ID {get;set;}
public string first_name {get;set;}
public string last_name {get;set;}
public string Address1 {get;set;}
public string Address1 {get;set;}
private List<DM_JoinData> AllViewData = null;
public VM_JoinData()
{
AllViewData=(from Tab1 in Table_1
join Tab2 in Table2 on Tab1.ID equals Tab2.ID
select new
DM_JoinData
{
ID=Tab1.ID,
first_name=Tab1.first_name,
last_name=Tab1.last_name,
Address1=Tab2.Address1,
Address2=Tab2.Address2
}
).ToList<DM_JoinData>();
}
}
我需要在我的ViewModel中加入许多DataModel并将常用字段提取到List中,但每次我需要创建一个新的ViewModel时,首先必须创建一个DataModel来表示新的所有字段ViewModel,然后我必须实例化一个新的DataModel,然后将这个DataModel实例的每个字段分别与我的Linq.Join()查询中的联接元素的相应值分配,如下所示。这会变得很麻烦,因为数据模型和字段数量增加。
注:
1)假设我已经在VM_JoinData的所有属性的setter,它是我的ViewModel实现INotifyPropertyChanged的。
2)Linq.Join中的Table_1和Table_2是列表<>或来自EntityFramework的一些DBContext。
我该如何创建一个新的ViewModel,而无需首先创建一个副本DataModel,而不必在Linq.Join()查询中分别指定ViewModel中的List中的DataModel的每个属性?
tx mm8,我已经尝试了第二种方法,并且弄伤了我的手:-)。因为每次创建一个ViewModel的新实例时,它会激发构造函数,然后构造一个VM_Model的每个实例都不需要的其他列表。然而,我会尝试第一个选项,它会让我省却我每次创建一个新的ViewModel都会创建一个新的DataModel。谢谢mm8 –