Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# - Combine multiple LINQ collections with same properties

Tags:

c#

list

linq

union

Maybe it's late in the night, but I'm stumped here. I'm trying to combine multiple lists with the same properties into one. I thought that LINQ's .UNION would do the trick but I was mistaken. Here's an example of a few of my lists:

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

My class is very simple. Here's what it looks like:

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

In case you're wondering, I used this LINQ query to get one of the above lists:

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"
  })
  ;

So far, it's pretty easy, but I want to combine all my lists into 1. So, my final list should look like:

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

I thought that a UNION command would do it:

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

But I'm not getting the desired output.

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

Any idea on what I'm doing wrong here?

like image 215
inquisitive_one Avatar asked Feb 07 '13 04:02

inquisitive_one


1 Answers

Try:

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

You don't want to be using Union ( working or not) anyway as it does set union.

like image 187
manojlds Avatar answered Sep 21 '22 21:09

manojlds