c# - Unisci due (o più) elenchi in uno, in C # .NET




6 Answers

Supponendo che si desideri un elenco contenente tutti i prodotti per gli ID di categoria specificati, è possibile trattare la query come una proiezione seguita da un'operazione di conversione . C'è un operatore LINQ che lo fa: SelectMany .

// implicitly List<Product>
var products = new[] { CategoryId1, CategoryId2, CategoryId3 }
                     .SelectMany(id => GetAllProducts(id))
                     .ToList();

In C # 4, è possibile abbreviare SelectMany per: .SelectMany(GetAllProducts)

Se hai già elenchi che rappresentano i prodotti per ciascun ID, allora ciò che ti serve è una concatenazione , come altri sottolineano.

c# .net list

È possibile convertire due o più liste in un'unica lista, in .NET usando C #?

Per esempio,

public static List<Product> GetAllProducts(int categoryId){ .... }
.
.
.
var productCollection1 = GetAllProducts(CategoryId1);
var productCollection2 = GetAllProducts(CategoryId2);
var productCollection3 = GetAllProducts(CategoryId3);



È possibile utilizzare il metodo di estensione Concat :

var result = productCollection1
    .Concat(productCollection2)
    .Concat(productCollection3)
    .ToList();






È necessario utilizzare l'operazione Concat




// I would make it a little bit more simple

 var products = new List<List<product>> {item1, item2, item3 }.SelectMany(id => id).ToList();

In questo modo si tratta di un elenco multidimensionale e il .SelectMany () lo appiattirà in un oggetto IEnumerable, quindi utilizzo il metodo .ToList () dopo.




So che questa è una vecchia domanda, ho pensato di aggiungere solo i miei 2 centesimi.

Se hai una List<Something>[] puoi unirti a loro usando Aggregate

public List<TType> Concat<TType>(params List<TType>[] lists)
{
    var result = lists.Aggregate(new List<TType>(), (x, y) => x.Concat(y).ToList());

    return result;
}

Spero che questo ti aiuti.






Related


Tags

c#   .net   list