2017-02-09 54 views
-1

只有某些性質我有兩個類:加入對象的兩個列表:所有屬性從一個列表,從另一個

class Class1 
{ 
    public int ProductId { get; set; } 
    public string ProductName { get; set; } 
    public int Amount { get; set; } 
    public string Category { get; set; } 
} 

class Class2 
{ 
    public id ProductId { get; set; } 
    public DateTime UpdateTime { get; set; } 
    public int ItemState { get; set; } 
    public decimal Price { get; set; } 
    public string ImageUrl { get; set; } 
} 

我創建兩個列出了每個這個類的:

public List<Class1> listClass1 { get; set; } = new List<Class1>(); 
public List<Class2> listClass2 { get; set; } = new List<Class2>(); 

現在我想通過對含有由Class1,只是UpdateTimeClass2ItemState所有屬性ProductID加入這兩個列表創建一個新的列表。做這個的最好方式是什麼?

(最終目標是讓用戶保存當前會話,讓他繼續他的工作以後,爲了這個,我需要完整的​​和listClass2提到的性能。我們的想法是在合併使用XmlSerializer列表並將其保存到一個XML文件中,要打開這個文件,我想反序列化它,如果你有更好的方法來讓用戶保存他的會話,我就會全力以赴)

+2

對於做」最好的辦法「是你已經標記的」LINQ「!或者請在你未能達到結果的地方張貼一些代碼。這將有所幫助。 –

+1

你是怎麼試試?基本上你是正確的:只需搜索「用linq連接兩個表」。 – HimBromBeere

+0

謝謝你們。並且,請注意,下次我會努力嘗試自己解決這個問題。 – pumuckl

回答

0

我建議代表聯合參數集的第三個類。

public class Class1_2 
{ 
    public int ProductId { get; set; } 
    public string ProductName { get; set; } 
    public int Amount { get; set; } 
    public string Category { get; set; } 

    public DateTime UpdateTime { get; set; } 
    public int ItemState { get; set; } 
} 

如何加入2只列出了LINQ Join 2 Lists描述。所以你最終會得到這樣的結果:

List<Class1_2> joinedList = (from item1 in listClass1 
          join item2 in listClass2 
          on item1.ProductId equals item2.ProductId 
          select new Class1_2 
          { 
           ProductId = item1.ProductId, 
           Amount = item1.Amount, 
           ProductName = item1.ProductName, 
           Category = item1.Category, 
           ItemState = item2.ItemState, 
           UpdateTime = item2.UpdateTime 
          }).ToList(); 

說明:您加入特定屬性上的項目。如果是在兩個列表等你拿項目,建設一個新的與選擇性能。在加入也沒有Class1_2工作,但你得到dynamic類型的結果。新Class_1_2的好處是,你可以用一個定義的結構,使用它的序列化。

編輯

你也可以使用一個構造在Class1_2

public Class1_2(Class1 c1, Class2 c2) 
{ 
    ProductId = c1.ProductId; 
    Amount = c1.Amount; 
    ProductName = c1.ProductName; 
    Category = c1.Category; 
    ItemState = c2.ItemState; 
    UpdateTime = c2.UpdateTime; 
} 

,將簡化一點select聲明:

select new Class1_2(item1, item2)).ToList(); 
+0

謝謝,非常有幫助! – pumuckl

+0

@pumuckl歡迎您 –

相關問題