gpt4 book ai didi

c# - 在 C# 中将 List 转换为 List

转载 作者:太空狗 更新时间:2023-10-29 18:03:52 26 4
gpt4 key购买 nike

假设我有一个 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();

关于c# - 在 C# 中将 List<dynamic> 转换为 List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com