[英]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 中的Select將float
列表的所有元素轉換為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.