如何在跳过行的第一个字段时连续找到连续3个字段中的每个'第一个字段。
假设我们有这样一行:
“Zero”,“One”,“Two”,“Three”,“One”,“Two”,“Three”,“One”,“Two”, “三”
我想制作一个循环,然后在这种情况下,当值“一个”时只做一些事情,但是当然这些值彼此不同。
请注意,我必须跳过“归零”
我需要在C#中使用它,但其他语言或伪代码也可以
请让我注意我可以用2个循环来做,但我认为这不是最有效的方法。
答案 0 :(得分:1)
所以这是一个DataTable
,你想跳过第一列并取每三列:
List<DataColumn> myColumns = table.Columns.Cast<DataColumn>()
.Skip(1)
.Select((col, index) => new { col, index})
.GroupBy(x => x.index / 3)
.Select(xg => xg.Select(x => x.col).First())
.ToList();
这使用整数除法“技巧”来获得一组三行。然后我取每组的第一行。
foreach (DataRow row in table.Rows)
Console.WriteLine("Every third field after the second: "
+ string.Join(",", myColumns.Select(c => row[c])));
答案 1 :(得分:0)
使用模运算符。
Pesudocode:
for (int i = 1; i < row.length; i++)
{
if (i+2 % 3 == 0) doSomething();
}