【问题标题】:How to skip list data which already processed?如何跳过已经处理的列表数据?
【发布时间】:2016-09-10 03:56:48
【问题描述】:

对于演示代码,我有一个 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)
            {
                //
            }
        }
    }
}

【问题讨论】:

    标签: c# loops logic


    【解决方案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
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 1970-01-01
      • 2021-08-17
      • 2022-11-27
      • 2015-10-03
      • 1970-01-01
      • 2020-05-15
      • 2011-12-24
      • 2019-07-10
      相关资源
      最近更新 更多