2013-02-07 8 views
6

शायद रात में देर हो चुकी है, लेकिन मैं यहां फंस गया हूं। मैं एक ही गुणों के साथ एक से अधिक सूचियों को गठबंधन करने की कोशिश कर रहा हूं। मैंने सोचा कि LINQ का .UNION चाल करेगा लेकिन मुझे गलत था। यहां मेरी कुछ सूचियों का एक उदाहरण दिया गया है:सी # - एक ही गुण के साथ एकाधिक LINQ संग्रहों को मिलाएं

LIST1 (report names): 
Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 

LIST2 (song names): 
Date  Name Title   Product 
01/01/13 John Time   Song 
01/05/13 Bob  Sorry   Song 

LIST3 (games names): 
Date  Name  Title   Product 
12/01/12 Google Bike Race  Game 
12/05/12 Apple  Temple Run Game 

मेरी कक्षा बहुत सरल है। यहाँ यह क्या लग रहा है की तरह है:

var finalList = Games 
    .Select (s => new MyClass { 
    Date = (System.DateTime) s.Games.Creation_date, 
    Name = s.Games.Last_name, 
    Title = string.Format("{0} (Report)", s.Game.Headline), 
    Product="Report" 
    }) 
    ; 

अब तक, यह बहुत आसान है, लेकिन मैं चाहता हूँ:

public class MyClass { 
    public DateTime Date { get; set; } 
    public string Name { get; set; } 
    public string Title { get; set; } 
    public string Product { get; set; } 
} 

मामले में आप सोच रहे हैं कि, मैं उपरोक्त सूची में से एक प्राप्त करने के लिए इस LINQ क्वेरी का इस्तेमाल किया 1. में अपने सभी सूचियां संयोजित करने की तो, मेरा अंतिम सूची दिखना चाहिए:

Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 
01/01/13 John Time   Song 
01/05/13 Bob  Sorry   Song 
12/01/12 Google Bike Race  Game 
12/05/12 Apple Temple Run Game 

मैंने सोचा था कि एक संघ आदेश यह करना होगा:

var newList = List1.Union(List2).Union(List3); 

लेकिन मुझे वांछित आउटपुट नहीं मिल रहा है।

Date  Name Title   Product 
02/01/13 Steve Hello World Report 
02/05/13 Greg Howdy   Report 
01/01/13 Bob  Time   Game 
01/05/13 John Sorry   Song 
12/01/12 Google Bike Race  Song 
12/05/12 Apple Temple Run Game 

क्या मैं यहां गलत कर रहा हूं पर कोई विचार?

+0

के तुम क्या परिणाम संघ का उपयोग करते समय मिलता है? –

उत्तर

14

प्रयास करें:

list1.Concat(list2).Concat(list3); 

आप (काम कर रहे हो या नहीं) वैसे भी रूप में यह संघ की स्थापना की है Union का उपयोग किया जा नहीं करना चाहती।

1

आप AddRange आदेश का उपयोग कर इस

var FullList = list1.AddRange(list2).AddRange(list3); 

कुछ ऐसा दिखाई देगा या असफल सुरक्षित तरीका whould

var FullList = list1.Concat(list2).Concat(list3).ToList(); //Personally i would use this 

हो की कोशिश कर सकते हैं या आप भी

var FullList = new[] { list1, list2, list3 }.SelectMany(a => GetAllProducts(a)).ToList(); 
संबंधित मुद्दे