描述:有一个源数组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可以实现吗?
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分吧?