[英]In C# Convert List<dynamic> to List<string>
假設我有一個包含字符串的List<dynamic>
對象:
var dlist = new List<dynamic>()
{
"test",
"test2",
"test3"
};
有沒有什么有效的方法可以將其轉換為正確的List<string>
對象? 我知道我可以遍歷這個列表並將每個元素轉換為一個字符串,然后將它添加到結果列表中,但也許一些 Linq 魔術可以在一行中完成這個技巧?
我嘗試將一些Select()
與ToList()
和Cast<string>
結合使用,但無濟於事。 這應該如何正確完成?
注意:說“高效”我的意思當然是代碼行數。 我不考慮執行時間或性能。 另外 - 假設我不需要類型檢查,只有在這個動態列表中才會有字符串。
編輯:好的,關於“為什么 Cast 不適合你”的評論 - 看起來我在收到的數據方面遇到了另一個問題(我正在使用 Dapper),這就是它不起作用的原因。 抱歉造成混亂,我認為我的列表轉換是錯誤的,而問題與此無關。
給定的
var dList = new List<dynamic>() { /*...initialize list */ };
如果您有興趣提取集合中的所有字符串,忽略所有其他類型,您可以使用:
// Solution 1: Include only strings, no null values, no exceptions thrown
var strings = dlist.OfType<string>().ToList();
如果您確定列表中的所有項目都是字符串(如果不是,則會拋出異常),您可以使用:
// Solution 2: Include strings with null values, Exception for other data types thrown
var strings = dlist.Cast<string>().ToList();
如果您想要列表中所有項目的默認字符串表示形式( null
null
,您可以使用:
// Solution 3: Include all, regardless of data type, no exceptions thrown
var strings = dlist.Select(item => item?.ToString()).ToList();
這個答案適用於
dart/flutter
給定的
List<dynamic> dList;
你可以使用
var sList = List<String>.from(dlist);
將List<dynamic>
轉換為List<String>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.