gpt4 book ai didi

C# 列表 ConvertAll 与索引

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:58 26 4
gpt4 key购买 nike

考虑一个输入列表 X,它由类型为 Tx 的对象组成,您需要为此运行几个函数之一,y_a = A(x)、y_b = B(x) 等...(所有这些Ty 的输出对象)生成输出列表 Y。最后,转换函数的选择是列表中元素索引的函数。

理想情况下,解决方案是单行(Linq,我在看着你)。

把它放在代码中:

public OtherType ConversionA (int n) {
}

public OtherType ConversionB (int n) {
}

class MyClass {
public MyClass (List<int> values)
: this (values.ConvertAllWithIndex((value, index) =>
UseConversionA (index) ? ConversionA (value) : ConversionB (value)) {
}

public MyClass (List<OtherType> things) {
...
}

bool UseConversionA (int index) {
...
}
}

我意识到这个示例代码的一个更简单的解决方案是在调用 MyClass 并简单地传递 Y 之前执行从 X 到 Y 的转换,但是请耐心等待,因为这是一个人为的例子,看看是否有人知道一种方法复制以目标元素的索引为条件的 ConvertAll。

此外,可以创建 Tx 的扩展以创建带索引的自定义 ConvertAll,但我很好奇是否可以想出一种方法让 Linq(或其他方式)实现这一目标。

最佳答案

Select+ToList 组合怎么样? Select 有一个为您提供索引的重载:

values.Select((value, index) => 
UseConversionA(index) ? ConversionA(value) : ConversionB(value)).ToList()

关于C# 列表 ConvertAll 与索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48728464/

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