首页 新闻 会员 周边 捐助

一个函数的实现问题

0
悬赏园豆:10 [已解决问题] 解决于 2017-08-24 08:52

描述:有一个源数组A,还有一个记录分组信息的数组B。

比如A是0-1000,B是(1,50,60)

那么我想获得按照B分的几个数组

得到(0),(1-49),(50-59)(60-100)

 

public List<PressureData> GroupByIndex(List<PressureData> pressureList,int startI,int endI)

{
List<PressureData> result = new List<PressureData>();
for (int i = startI; i <= endI; i++)
{
result.Add(pressureList[i]);
}
return result;
}

 


///进行分组
for (int i = 0; i < devideInfo.Count; i++)
{
if (i == 0)
{
pressureListItems.Add(GroupByIndex(pressureList, 0, devideInfo[i]-1));
pressureListItems.Add(GroupByIndex(pressureList, devideInfo[i], devideInfo[i + 1] - 1));
}
else if (i < devideInfo.Count - 1)
{

pressureListItems.Add(GroupByIndex(pressureList, devideInfo[i], devideInfo[i + 1]-1));
}
else if (i == devideInfo.Count - 1)
{

pressureListItems.Add(GroupByIndex(pressureList, devideInfo[i], pressureList.Count-1));
}
}

 

这样写看着不舒服而且麻烦...而且感觉还有bug(求大神给我看看有没有bug)

还有什么好办法吗?linq可以实现吗?

猝不及防的主页 猝不及防 | 老鸟四级 | 园豆:2878
提问于:2017-07-07 10:19
< >
分享
最佳答案
0

1:对ab排序  a=a.orderby(a1=>a1);b=b.orderby(b1=>b1);

2.如果b中最后一个小于a的最大值.则在b中追加a的最大值 if(b.max()<=a.max())b=b.union(a.max()+1)

3.对a进行分组 a.groupby(m=>b.first(b1=>b1>m))

算不算奇思妙想?这个思路至少值25分吧?

收获园豆:10
吴瑞祥 | 高人七级 |园豆:29449 | 2017-07-07 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册