我有兩個表,其模式是在: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 –