簡體   English   中英

列表addrange不同類型

[英]List addrange different type

我有 2 個不同類型的列表,其中一個是 float,另一個是 int

List<int> listone = new List<int>();
List<float> listtwo = new List<float>();

如何使用 AddRange() 到 append 從 listtwo 到 listone 的所有數據?

我努力了:

listone.AddRange((IEnumerable<int>)listtwo);

它返回錯誤“InvalidCastException:指定的強制轉換無效。”
我也嘗試過創建一個名為temp的新List<int> ,將 listtwo 中已經轉換為 int 的數據填充,然后listone.AddRange(temp) ,但我想知道是否有更短/更有效的方法來做到這一點?

您可以使用 System.Linq 中的Selectfloat列表的所有元素轉換為int

listone.AddRange(listtwo.Select(x=>(int) x))

https://stackoverflow.com/a/66544890/1245027的替代品:

如果您確定強制轉換是合法的,您可以使用:

listone.AddRange(listtwo.Cast<int>());

如果從類型 A 轉換為類型 B 可能存在問題(並且類型是引用類型):

listone.AddRange(listtwo.Select(x => x as Type));

.Cast over.Select 有什么好處? 解決這兩個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM