当前位置: 首页 > 知识库问答 >
问题:

将统一类型的元组转换为该类型的列表[重复]

祁修平
2023-03-14

假设我有一个如下所示的元组:

(string, string, string) myTuple = ("Poop","Stack","Overflow");

有没有一种优雅的方法把它转换成一个字符串列表,看起来像这样?

var myList = new List<string>() { myTuple.Item1, myTuple.Item2, myTuple.Item3 };

我不能在元组上foreach,也不能将它转换为可枚举。。。

谢谢!

共有1个答案

贺飞星
2023-03-14

假设您想要处理具有相同类型字段的值元组,首先您可以使用简单的反射:

var myList = myTuple.GetType()
    .GetFields()
    .Select(fi => fi.GetValue(myTuple))
    .Cast<string>()
    .ToList();

这会带来一些性能损失。

如果您有相同大小的元组,您只需引入以下方法即可:

public static List<T> GetFromTuple<T>(ValueTuple<T,T,T> tuple)
{
    return new List<T> {tuple.Item1, tuple.Item2, tuple.Item3}; 
}

同样,使用反射,您可以编写一小段代码,为所有不同类型的valueTuple生成方法(或为其创建T4模板)。

 类似资料:
  • 我试图创建动态下拉,其值是从使用微服务的查找表之一填充,但我已经尝试了许多方式相同,到目前为止,我还没有成功地使其工作。 下面的代码用于调用webservice 这是我的对象类型 仅用于显示目前运行的以下代码 我做了什么我尝试调用webservice在多种方式调用它,尝试铸造服务响应直接使用JSON字符串响应和可能的事情我尝试过。 你能在这里帮忙吗?我们将不胜感激。

  • 问题内容: 例如,假设你有两个类: 我有一个返回a的方法,List 并且我想将列表中的所有对象都强制转换为,TestB以便最终得到 问题答案: 简单地铸造几乎可行;但这是行不通的,因为你不能将一个参数的泛型类型转换为另一个参数。但是,你可以强制转换中间通配符类型,并且将允许它(因为你可以强制转换为通配符类型或从通配符类型强制转换,只是带有未选中的警告):

  • 问题:我有一个接口类型列表,在存储到数据库之前需要将其转换为数据库DTO列表。我不熟悉Java8流和映射函数,所以任何帮助都会很好。 研究:我试图在映射中使用instanceOf,但总是出现编译错误。 下面是不同的类及其层次结构。 为了映射Dog和Cat类,我创建了单独的函数。 使用streams,我尝试根据对象类型使用不同的映射函数。 我总是在Collectors.to列表()编译问题。我如何解

  • 我在尝试使用JSON_serializable序列化从internet获取的复杂JSON并使用FutureProvider将它们连接在一起时遇到了这个问题。这是json文件, 这是包含序列化类的代码, 获取json文件并将其转换为dart的未来提供者, 这是基因编码, 这是转换后的json文件显示的代码 当我试着运行这个项目时,我遇到了这个错误 i/flutter(23347): type'Lis

  • 当运行此代码时,我得到以下错误:

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1

  • 我正在修改open JDK以添加特性,我已经遇到了两次,但没有好的解决方案。

  • 我正在尝试将列表的元组转换为列表,但是我没有成功,所以我有了这个函数 获取输入,例如: ( [1,2,3,4], [7,8,9] ) 并应返回: [1,7,2,8,3,9,4] 我有 结果是: [1,7,2,8,3,9***异常:hw2.hs:29: 1-54:函数函数中的非穷尽模式 我知道我得到这个错误,因为列表是不一样的大小,你们怎么认为我可以解决这个问题