2016-05-16 60 views
0

我有2個嵌套列表需要合併在一起ı嘗試使用LINQ查詢everthing試試連接和工會沒有完成查詢..是否有一種方法合併這些我需要的方式?如何合併兩個子列表與linq

public class BaseFilter 
{ 
    public string Name { get; set; } 
    public int ID { get; set; } 
} 
public class Filter 
{ 
    public string Name { get; set; } 
    public int DetailId { get; set; } 
    public List<BaseFilter> Values { get; set; } 
} 

我有2個過濾器列表,如:

List 1:      List2: 

Clour :      Colour: 
    Red        Red 
    Blue 
Size:       Size: 
     XL        L 
     M 
     S 

我想不重複的記錄與一個合併列表2

像: IST 1:

Clour :      
    Red       
    Blue 
Size:      
     XL       
     M 
     S 
     L 

編輯更好地理解這個問題

我的假設是,你有一個像(以下兩列)表結構:

Details   DetailsValue 

Size     {S,M,L} 
Colour    {Green,blue} 
PerfumeSize  {50ml,100ml} 
Type    {EDP,EDT} 

另一個類似的表是存在的,現在你想將它們合併,沒有任何價值的重複,是否正確?

另一個列表 詳細DetailsValue

Size     {S} 
Colour    {Red} 
PerfumeSize  {50ml,150ml} 
Type    {EDP} 

預計結果:

詳細DetailsValue

Size     {S,M,L} 
Colour    {Green,blue,red} 
PerfumeSize  {50ml,100ml,150ml} 
Type    {EDP,EDT} 
+3

的可能的複製[如何合併數據2清單與在C#中刪除重複值](http://stackoverflow.com/questions/4031262/how-to-merge-2-listt-with-removing-duplicate-values-in-c-sharp) –

+0

我不dont也這樣覺得。在這個對象中有列表對象的另一個列表 –

+0

然後你需要更好地解釋這個問題。從你所解釋的是重複的。 –

回答

3

問題是相當混亂沒有清晰,你想達到什麼,有什麼關係顏色和大小,在列表1中他們沒有一對一的映射數據,但以下是我的建議,以獲得一個解決方案:

var result = list1.Concat(list2).GroupBy(x => x.Color,x => x.Size); 

在這裏,我們連接兩個列表,這仍然會導致重複的數據,那麼你可以通過組如上將在這種情況下,根據顏色聚集尺寸顯示。這裏的大小仍然是結果中的一個集合,可以進行處理以提供相關結果。

其他選擇,我能想到的是全外連接,在這裏你需要定義,其中列表數據採取優先,這將是一個默認值,不可

+0

抱歉,問題的清晰度。我需要解釋。該列表包含產品的詳細信息和詳細信息值。例如ı有衣服和香水清單ı將這些物品的細節和細節值放在一起,如:{尺寸{S,M,L},Clour {綠色,藍色},香水尺寸{50ml,100ml},{EDP,EDT} }像這樣的列表有這樣的另一個列表,我需要合併在一起 –

+0

@legend_blue不要在對答案的評論中解釋問題。用這些信息編輯你的問題。另外,不要僅僅解釋,展示。 –

+0

@legend_blue是的,這是很重要的,請編輯輸入和輸出要求,以便正確的linq可以設計出來,更精細 –