gpt4 book ai didi

c# - 使用 linq 列出循环操作

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:50 25 4
gpt4 key购买 nike

我有这样的列表:

var query = Enumerable.Range(0, drea2.count / 4 * 1440).Select((n, index) =>
{
if ((index >= 480 && index < 750) || (index >= 810 && index < 1080))
return 0;
else if (index >= 750 && index < 810)
return 1;
else
return 2;
});

但是,这个范围必须是可变的。例如;我还有一个包含这些索引的列表。这些索引可能彼此不同。

enter image description here

1440 表示 1440 分钟。的一天。我想将 1440 添加到这些索引中。例如:

查询[0], ...查询[479] = 2 ---查询[1440], ...查询[1919] = 2 ---查询[2880] = 2

查询[480],..查询[749] = 0,---查询[810],..查询[1079] = 0,---查询[1920],..查询[2189] = 0 ..

因此,无论 drea2 列表的数量是多少,查询的大小都是 (drea2.count/4 * 1440)

我该怎么做?

编辑:如果 drea2.Count() 返回 6,我的 if 条件必须有 6 个不同的短语每个 1440 索引。对于第一个如果:(现在查询范围必须有 7200 大小)

if ((index >= 480 && index < 750) || (index >= 810 && index < 1080))
return 0; // for 1

if ((index >= 480 + 1440 && index < 750 + 1440) || (index >= 810 + 1440 && index < 1080 + 1440))
return 0; // for 2
... // for 3 (+ 2880)
... // for 4 (+ 4320)
... // for 5 (+ 5760)

if ((index >= 480 + 7200 && index < 750 + 7200) || (index >= 810 + 7200 && index < 1080 + 7200))

最佳答案

根据 OP 的更新,我重写了我的答案。之前版本引用,关注this link .

这是建议的解决方案,假设 drea2 collection 是一个数组或列表(因此实现了 IList<int> 接口(interface))和每个 4此列表中的项目构成了要在 1440 的生成序列中使用的范围项目:

public IEnumerable<int> GetQuery(IList<int> drea2)
{
var count = drea2.Count;
var result = new int[(count/4)*1440];

for (var i = 0, fillIndexStart = 0; i < count; i+= 4, fillIndexStart += 1440) {
var rangeIndices = new[] {
drea2[i],
drea2[i+1],
drea2[i+2],
drea2[i+3]
};

for (var j = 0; j < rangeIndices[0]; j++) {
result[fillIndexStart + j] = 2;
}
for (var j = rangeIndices[3]; j < 1440; j++) {
result[fillIndexStart + j] = 1;
}
}

return result;
}

很遗憾,没有 Linq在这里,但我希望它能满足需要。

前面的代码会使用这个条件,而不是上面方法中的两个 for 循环:

if ((j >= rangeIndices[0] && j < rangeIndices[1]) 
|| (j >= rangeIndices[2] && j < rangeIndices[3]))
result[fillIndexStart + j] = 0;
else if (j >= rangeIndices[1] && j < rangeIndices[2])
result[fillIndexStart + j] = 1;
else
result[fillIndexStart + j] = 2;

由于数组总是填充有默认值,我们可以利用 result充满了零。这就是为什么我将条件重写为 2 for 的原因循环

注意。上面的代码依赖于 drea2.Count / 4成为0 .否则,你会得到 IndexOutOfRangeException在初始化 rangeIndices 时数组。

关于c# - 使用 linq 列出循环操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23058719/

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