Richa
Richa

Reputation: 3289

Combine two list data into single list C#

So i have following two list using linq.

List<One> one= A.Common
               .Join(B.Common,
                a => a.ID,
                b=> b.ID,
                (a, b) => new One
                {
                  ID = b.PID,
                  Name = b.PCName,
                  LastName = a.LName
                }).ToList();

List<One> two = (from c in D.Options
                 select new One
                 {
                   MainName = c.mName
                 }).ToList(); 

 List<One> sn = one.Concat(two).ToList();

I am concating both list. But when i debug i am getting MainName as null in sn list.

How do i get data from both list in single list??

Upvotes: 0

Views: 782

Answers (3)

Krunal Mevada
Krunal Mevada

Reputation: 1655

You can use the LINQ Concat and ToList methods:

var mergedList = YourFirstList.Concat(YourSecondList)
                    .Concat(YourThirdList)
                    .ToList();

Edit:

one.Concat(two).Select(g => g.Aggregate((p1,p2) => new One 
{
    ID = p1.ID,
    Name = p1.PCName, 
    LastName = p1.LName,
    MainName = p2.mName
}));

more efficient ways to do this - the above will basically loop through all the entries, creating a dynamically sized buffer.

var mergedList = new List<One>(YourFirstList.Count +
                               YourSecondList.Count +
                               YourThirdList.Count);
mergedList.AddRange(YourFirstList);
mergedList.AddRange(YourSecondList);
mergedList.AddRange(YourThirdList);

AddRange is special-cased for ICollection<T> for efficiency.

You can use the Zip method.

one.Zip(two,(o1, o2) => new One() 
{ 
   ID = o1.ID, 
   Name = o1.PCName, 
   LastName = o1.LName, 
   MainName = o2.mName 
});

Upvotes: 0

dmyoko
dmyoko

Reputation: 647

This is how you do it:

var sn = one.Zip(two, (x, y) => new One{
  ID = x.ID,
  Name = x.Name,
  LastName = x.LastName,
  MainName = y.MainName
});

Upvotes: 3

Dreamweaver
Dreamweaver

Reputation: 1346

You want the MainName property assigned for all the list values in List ONE ?

As from above code concatenation will join two list and the MainName will be not set for list one elements.

one.Concat(two)

Above line will just concat the both lists to one list elements.

Upvotes: 0

Related Questions