我读出一个数组
例如 里边的数据 是 2010001,2010002,2010003,2010004,2010005,2010006,2010007,2010008,2010009,2010031,2010032,,2010033,2010034,2010035,2010036,2010037,2010038,2010039,2010040,2010800,2010801,2010802,2010803,2010804,2010805
上边这是数组里边的数据2010001---2010009
2010031---2010040
2010801---2010805
让它们这样分组了。怎么弄啊。。 在线等
例如 里边的数据 是 2010001,2010002,2010003,2010004,2010005,2010006,2010007,2010008,2010009,2010031,2010032,,2010033,2010034,2010035,2010036,2010037,2010038,2010039,2010040,2010800,2010801,2010802,2010803,2010804,2010805
上边这是数组里边的数据2010001---2010009
2010031---2010040
2010801---2010805
让它们这样分组了。怎么弄啊。。 在线等
int [][] darr=new int[3][10240];
for(int i=0;i<array.length;i++)
{
if( array[i] 符合第一个规则 darr[0][j1++]=array[i];
if( array[i] 符合第二个规则 darr[0][j2++]=array[i];
.......}
private void button1_Click(object sender, EventArgs e)
{
int[] datas = new int[] { 2010001, 2010002, 2010003, 2010004, 2010005, 2010006, 2010007, 2010008, 2010009, 2010031, 2010032, 2010033, 2010034, 2010035, 2010036, 2010037, 2010038, 2010039, 2010040, 2010800, 2010801, 2010802, 2010803 };
List<List<int>> groups = new List<List<int>>();
int t = int.MinValue;
var result = datas.Aggregate(new List<List<int>>(), (container, x) =>
{
if (x - t > 1 || groups.Count == 0)
{
List<int> tl = new List<int>();
tl.Add(x);
groups.Add(tl);
}
else
{
groups[groups.Count - 1].Add(x);
}
t = x;
return container;
})
.Select(lst => lst.ToArray());
foreach (List<int> group in groups)
{
group.Sort();
StringBuilder txtBuilder = new StringBuilder();
foreach (int i in group)
{
txtBuilder.Append(i.ToString() + "\t");
}
MessageBox.Show(txtBuilder.ToString());
}
}
稍微优化一下private void button1_Click(object sender, EventArgs e)
{
int[] datas = new int[] { 2010001, 2010002, 2010003, 2010004, 2010005, 2010006, 2010007, 2010008, 2010009, 2010031, 2010032, 2010033, 2010034, 2010035, 2010036, 2010037, 2010038, 2010039, 2010040, 2010800, 2010801, 2010802, 2010803 };
List<List<int>> groups = new List<List<int>>();
int t = int.MinValue;
datas.Aggregate((container, x) =>
{
if (x - t > 1 || groups.Count == 0)
{
List<int> tl = new List<int>();
tl.Add(x);
groups.Add(tl);
}
else
{
groups[groups.Count - 1].Add(x);
}
t = x;
return container;
});
foreach (List<int> group in groups)
{
group.Sort();
StringBuilder txtBuilder = new StringBuilder();
foreach (int i in group)
{
txtBuilder.Append(i.ToString() + "\t");
}
MessageBox.Show(txtBuilder.ToString());
}
}
{
for(int j=0;j<5;j++)
{
if(j=4)
{"代码<br>"}
else
{
"代码"
}
}
}
意思分 5 一个组 满 5转行
{
if(i mod 4)
{代码+换行符}
else{代码}
}
意思分 5 一个组 满 5转行上面那个有错
{
if (x - t > 1 || groups.Count == 0)
{
List<int> tl = new List<int>();
tl.Add(x);
groups.Add(tl);
}
else
{
groups[groups.Count - 1].Add(x);
}
t = x;
return container;
});这段是干吗用的啊? C#里边报错啊..
{
List<List<int>> groups = new List<List<int>>();
int t = int.MinValue;
foreach (int x in datas)
{
if (x - t > 1 || groups.Count == 0)
{
List<int> tl = new List<int>();
tl.Add(x);
groups.Add(tl);
}
else
{
groups[groups.Count - 1].Add(x);
}
t = x;
}
return groups;
}
List<List<int>> groups = lambda_and_linq01(datas);
foreach (List<int> group in groups)
{
group.Sort();
StringBuilder txtBuilder = new StringBuilder();
foreach (int i in group)
{
txtBuilder.Append(i.ToString() + "\t");
}
MessageBox.Show(txtBuilder.ToString());
}