请问下,想这样分割list如何操作

gongjie416 2015-01-23 09:59:36
原有一个list,里面数据是这样的


现在想把它分割成多个list,按照 运费价格 这一列来分, 有运费的到下个有运费之前为一个list
效果:


...全文
293 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
再补充下
List<List<Class>> list = new List<List<Class>>();
List<Class> source;//这里不做不可为空什么的判断了,只是作为例子而已
if(source.Count==1)
{
         list.Add(source)
}
else
{
     int prevIdx=0;
    //and so on
}
  • 打赏
  • 举报
回复
调整版,这次应该不会有问题了
List<List<Class>> list = new List<List<Class>>();
List<Class> source;//这里不做不可为空什么的判断了,只是作为例子而已
int prevIdx=0;
for(int i=0;i<source.Count;i++)
{
 if(i==source.Count-1)
             {
                     list.Add(source.Take(i-prevIdx).Skip(prevIdx).ToList());
             }
else if(source[i].运价.HasValue)//假定没运价你用null表示,运价是decimal?类型
      {
            
             if(i==prevIdx)
             {
                      continue;
             }
             else
              {
                         list.Add(source.Take(i-prevIdx).Skip(prevIdx).ToList());
                         prevIdx=i;
              }
      }
}
  • 打赏
  • 举报
回复
用循环写是最简单的,纯手写代码,不保证正确,只保证思路
List<List<Class>> list = new List<List<Class>>();
List<Class> source;//这里不做不可为空什么的判断了,只是作为例子而已
int prevIdx=-1;
for(int i=0;i<source.Count;i++)
{
      if(source[i].运价.HasValue)//假定没运价你用null表示,运价是decimal?类型
      {
             if(i==source.Count-1)
             {
                     list.Add(source.Take(i-prevIdx).Skip(prevIdx).ToList());
             }
             else if(i==0&&prevIdx==-1)
             {
                      prevIdx=0;
                      continue;
             }
             else
              {
                         list.Add(source.Take(i-prevIdx).Skip(prevIdx).ToList());
                         prevIdx=i;
              }
      }
}
山鹰的天空 2015-01-23
  • 打赏
  • 举报
回复
if(list[i]["运费价格"]=="") 这个写错了
gongjie416 2015-01-23
  • 打赏
  • 举报
回复
List list1=new List(); for(int i=0;i<list.length;i++) { if(list[i]["运费价格"]=="") list1.add(list[i]); else list1=new List(); } 类似这样吗
gongjie416 2015-01-23
  • 打赏
  • 举报
回复
我知道是excel表格,这只是截图表示下
feiyun0112 2015-01-23
  • 打赏
  • 举报
回复
var dict = list.GroupBy(p => p.运费价格).ToDictionary(p => p.Key, p => p.ToList());
於黾 2015-01-23
  • 打赏
  • 举报
回复
你这根本不是list,是个excel表好吧? 你list里放的是实体类,然后要读取excel表填充? 那就读excel的时候做个判断,如果有运费就new一个,没有就add进已有的list里呗 最后再把这些list放到一个新的list<list<实体类>>里去

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧