gpt4 book ai didi

c# - 使用 LINQ 选择 List 中的项目并添加整数以填充新 List

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

假设我有 List<string> = new List<string>() {"20","26","32"}
我想根据前一个列表中的第一个数字创建一个新列表,并且它应该具有相同数量的元素。我将在第一个数字上添加一个特定的数字,依此类推。例如,使用 6 作为数字相加我会得到 20、26、32。结果列表将是 List。数字 6 是一个类范围的属性。

如果我有一个 "N","N","32"的列表,问题就来了

我需要生成相同的 20、26、32 列表,但我必须使用最后一个数字来计算其他数字。

如果我有“N”、“26”、“N”,我将不得不使用中间的数字来计算其他数字。

N 表示输入列表中没有数据,它总是这个字符

总之,我需要生成一个与输入列表具有相同数量元素的新列表,并且它必须采用第一个或下一个数字元素来生成使用指定数字添加/减去值的结果列表。

我想知道 LINQ 的聚合函数是否能够处理它,但使用它有点迷失。

示例:

"20","26","32" = 20,26,32
"N","26","32" = 20,26,32
"N","N","32" = 20,26,32
"20","26","N" = 20,26,32

最佳答案

像这样的东西怎么样:

var n = 6;

List<string> strList = new List<string>() {"20","26","32"};
// list can also be {null, "26", null} , {null, "N", "32"} ,
// {"N", "26", null } etc...

var list = strList.Select(s =>
{
int v;
if(string.IsNullOrEmpty(s) || !int.TryParse(s,out v))
return (int?)null;
return v;
});

var firstValidVal = list.Select((Num, Index) => new { Num, Index })
.FirstOrDefault(x => x.Num.HasValue);
if(firstValidVal == null)
throw new Exception("No valid number found");

var bases = Enumerable.Range(0, strList.Count).Select(i => i * n);
int startVal = firstValidVal.Num.Value - bases.ElementAt(firstValidVal.Index);

var completeSequence = bases.Select(x => x + startVal);

关于c# - 使用 LINQ 选择 List<T> 中的项目并添加整数以填充新 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776716/

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