Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C每n个项目迭代一个循环#_C# - Fatal编程技术网

C# 如何使用C每n个项目迭代一个循环#

C# 如何使用C每n个项目迭代一个循环#,c#,C#,我有一个可观察的集合和一个值列表​​我想循环,以便插入 10个值​​一次依次收集并处理它们。 我试过了 Dictionary dataDic=newdictionary(); 可见采集结果; foreach(数据DIC中的KeyValuePair对) { DateTime _date=DateTime.ParseExact(pair.Key,PRIVATE_date_格式,CultureInfo.InvariantCulture); 对于(int i=0;i您的代码在插入函数处失败: 例外情况

我有一个可观察的集合和一个值列表​​我想循环,以便插入 10个值​​一次依次收集并处理它们。 我试过了

Dictionary dataDic=newdictionary();
可见采集结果;
foreach(数据DIC中的KeyValuePair对)
{
DateTime _date=DateTime.ParseExact(pair.Key,PRIVATE_date_格式,CultureInfo.InvariantCulture);

对于(int i=0;i您的代码在插入函数处失败:

例外情况

ArgumentOutOfRange异常

索引小于0

-或-

索引大于计数

您正处于第二种情况。在不完全了解您正在执行的操作的情况下,您可以这样修改代码:

   for (int i = 0; i <= dataDic.FirstOrDefault.Value.Count - 1; i += 10)
    {
        // Protect your code from exception
        if (i <= result.Count) {
            result.Insert(i, new ListViewThumbnailViewModel()
            {
                DateItem = _date,
                ListThumbnail = pair.Value
            });
        }
        result.Skip(i).Take(10).ToList();
        Thread.Sleep(100);
    }

for(int i=0;i问题是您使用的是您的
i
索引,但您只检查一个案例,而不检查它,因为它可能会中断,而只是因为您想迭代它。
这是一个解决方案,其中一些缺陷得到了纠正

Dictionary<string, ObservableCollection<object>> dataDic = new Dictionary<string, ObservableCollection<object>>();
ObservableCollection<ListViewThumbnailViewModel> result = new ObservableCollection<ListViewThumbnailViewModel>();

foreach (KeyValuePair<string, ObservableCollection<object>> pair in dataDic)
{
    DateTime _date = DateTime.ParseExact(pair.Key, PRIVATE_DATE_FORMAT, CultureInfo.InvariantCulture);
    for (int i = 0; i <= dataDic.FirstOrDefault().Value.Count - 1 && i <= result.Count ; i += 10)
    {
        result.Insert(i, new ListViewThumbnailViewModel()
        {
            DateItem = _date,
            ListThumbnail = pair.Value
        });
        result.Skip(i).Take(10).ToList(); // use the return value here
        Thread.Sleep(100);
    }
}
Dictionary dataDic=newdictionary();
ObservableCollection结果=新的ObservableCollection();
foreach(数据DIC中的KeyValuePair对)
{
DateTime _date=DateTime.ParseExact(pair.Key,PRIVATE_date_格式,CultureInfo.InvariantCulture);

对于(int i=0;我可以向您展示您希望列表的内容随着时间的推移如何变化(包括列表最初的内容),以便我们知道您正在尝试做什么?请发布以提供…很难猜测您为什么会看到这个问题…特别是对于仅为好玩而添加的代码行,如
result.Skip(i).Take(10).ToList()
最有可能什么都不做…我不认为这会编译,但我假设dataDic是一个默认字典,FirstOfDefault是一个方法。你面临的问题可能是
result.Skip(I)
,结果没有
I
项。你知道
result.Skip(I).Take(10).ToList()
什么也没做?我更新了代码,我的问题是:通常情况下,我会将每个数据项依次添加到结果中,但要求再显示10个项目,然后再添加更多。我更新了代码,我的问题是:通常情况下,我会将每个数据项依次添加到结果中,但要求再显示10个项目,然后再添加更多。谢谢您的回答
Dictionary<string, ObservableCollection<object>> dataDic = new Dictionary<string, ObservableCollection<object>>();
ObservableCollection<ListViewThumbnailViewModel> result = new ObservableCollection<ListViewThumbnailViewModel>();

foreach (KeyValuePair<string, ObservableCollection<object>> pair in dataDic)
{
    DateTime _date = DateTime.ParseExact(pair.Key, PRIVATE_DATE_FORMAT, CultureInfo.InvariantCulture);
    for (int i = 0; i <= dataDic.FirstOrDefault().Value.Count - 1 && i <= result.Count ; i += 10)
    {
        result.Insert(i, new ListViewThumbnailViewModel()
        {
            DateItem = _date,
            ListThumbnail = pair.Value
        });
        result.Skip(i).Take(10).ToList(); // use the return value here
        Thread.Sleep(100);
    }
}