亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C#.NET中將兩個(或多個)列表合并為一個

在C#.NET中將兩個(或多個)列表合并為一個

慕妹3242003 2019-11-12 09:19:10
是否可以使用C#在.NET中將兩個或多個列表轉換為一個列表?例如,public static List<Product> GetAllProducts(int categoryId){ .... }...var productCollection1 = GetAllProducts(CategoryId1);var productCollection2 = GetAllProducts(CategoryId2);var productCollection3 = GetAllProducts(CategoryId3);
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

您可以使用LINQ Concat和ToList方法:


var allProducts = productCollection1.Concat(productCollection2)

                                    .Concat(productCollection3)

                                    .ToList();

請注意,有更有效的方法可以執行此操作-上面的操作基本上會遍歷所有條目,從而創建動態大小的緩沖區。正如您可以預測的開始大小一樣,您不需要此動態大小調整...因此您可以使用:


var allProducts = new List<Product>(productCollection1.Count +

                                    productCollection2.Count +

                                    productCollection3.Count);

allProducts.AddRange(productCollection1);

allProducts.AddRange(productCollection2);

allProducts.AddRange(productCollection3);

(為了提高效率AddRange而特例ICollection<T>。)


除非您確實需要,否則我不會采用這種方法。


查看完整回答
反對 回復 2019-11-12
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

假設您想要一個包含指定類別ID的所有產品的列表,則可以將查詢視為投影,然后進行展平操作。還有,做一個LINQ經營者:SelectMany。


// implicitly List<Product>

var products = new[] { CategoryId1, CategoryId2, CategoryId3 }

                     .SelectMany(id => GetAllProducts(id))

                     .ToList();

在C#4中,可以將SelectMany縮短為: .SelectMany(GetAllProducts)


如果您已經有代表每個ID的產品的列表,那么您需要的是串聯,正如其他人指出的那樣。


查看完整回答
反對 回復 2019-11-12
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

您可以使用LINQ將它們結合起來:


  list = list1.Concat(list2).Concat(list3).ToList();

不過,較傳統的使用方法List.AddRange()可能會更有效。


查看完整回答
反對 回復 2019-11-12
  • 3 回答
  • 0 關注
  • 2409 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號