对于演示代码,我有一个for
循环,根据某些条件调用方法LoopData
。
在LoopData
方法中,我正在迭代列表List<Data>
并且此方法一次又一次地调用各种条件,并且每次整个列表List<Data>
都在迭代。
问题是,如何跳过上一次调用中已经处理的列表List<Data>
中的那些记录?
这是代码,
public class Data
{
public int Id { get; set; }
public int ItemId { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Data> data = new List<Data>
{
new Data { Id = 1, ItemId = 100 },
new Data { Id = 2, ItemId = 200 },
new Data { Id = 3, ItemId = 300 },
new Data { Id = 4, ItemId = 400 },
new Data { Id = 5, ItemId = 500 }
};
for(int i = 1; i <= 2; i++)
{
if (i == 1)
{
LoopData(data, 100, 300);
}
else
{
LoopData(data, 300, 500);
}
}
}
private static void LoopData(List<Data> data, int startItemId, int endItemId)
{
for(int i = 0; i < data.Count; i++)
{
if(data[i].ItemId >= startItemId && data[i].ItemId <= endItemId)
{
//
}
}
}
}
答案 0 :(得分:1)
向Data
添加一个属性,表明它已被处理。
public class Data
{
public int Id { get; set; }
public int ItemId { get; set; }
public bool Processed { get; set; }
}
处理完数据后设置Data.Processed
!
private static void LoopData(List<Data> data, int startItemId, int endItemId)
{
for(int i = 0; i < data.Count; i++)
{
if(!data[i].Processed &&
data[i].ItemId >= startItemId &&
data[i].ItemId <= endItemId)
{
//
data[i].Processed = True; // this data is processed
}
}
}