date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");要求排序成
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");要求排序成
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
private void button1_Click(object sender, EventArgs e)
{
string sheetName = "";
List<string> No = new List<string>();
List<string> No2 = new List<string>();
List<string> date = new List<string>();
No.Add("[0]");
No.Add("[2]");
No.Add("[3]");
No2.Add("000");
No2.Add("111");
No2.Add("222");
No2.Add("333");
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
List<string> tmpdate = new List<string>(date.Count);
int index = 0; int j=0;
for (int s = 0; s < No.Count; s++)
{
for (j = 0; j < No2.Count; j++)
{
for (int i = 0; i < date.Count; i++)
{
if (date[i].Contains(No2[j]))
{ if (date[i].Contains(No[s]))
{
tmpdate.Add(date[i]);
if (sheetName!="" && sheetName != No[s])
{
//new sheet
}
sheetName = No[s]; } }
}
} }
}
先把[]中数字截取出来,再按照数字OrderBy就行了 List<string> date = new List<string>();
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
string sh = date[0];
sh = sh.Substring(sh.IndexOf('['), 2);
var ql = date.OrderBy(t => t.Substring(t.IndexOf('['), 2));
foreach(var l in ql)
{
Console.WriteLine(l.ToString());
}
/*
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
*/
void Main()
{
List<string> date = new List<string>();
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
date=date.OrderBy(d=>int.Parse(Regex.Match(d,@"(?<=\[)\d+(?=\])").Value)).ToList();
date.ForEach(d=>Console.WriteLine(d));
/*
222BBBBB[0]BBBBB
222bbbbbbb[0]BBBBB
333aaaaaaaa[0]aaaaaaa
333AAAAAAAAA[0]AAAAAAAAA
111cccccc[2]cccc
111CCCCC[2]cccc
000ddddddd[3]dddddd
000BBBBB[3]dddddd
*/
}
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
string sh = date[0];
sh = sh.Substring(sh.IndexOf('['), 2);
var ql = date.OrderBy(t => t.Substring(t.IndexOf('['), t.IndexOf(']') - t.IndexOf('[') + 1));
foreach (var l in ql)
{
Console.WriteLine(l.ToString());
}督察的正则提取也不错
呵呵,你的linq进步很快。
List<string> date = new List<string>();
date.Add("000ddddddd[3]dddddd");
date.Add("000BBBBB[3]dddddd");
date.Add("111cccccc[2]cccc");
date.Add("111CCCCC[2]cccc");
date.Add("222BBBBB[0]BBBBB");
date.Add("333AAAAAAAAA[0]AAAAAAAAA");
date.Add("222bbbbbbb[0]BBBBB");
date.Add("333aaaaaaaa[0]aaaaaaa"); (from l in date
group l by l.Substring(l.IndexOf('['), l.IndexOf(']') - l.IndexOf('[') + 1) into ll
orderby ll.Key
select ll).ToList().ForEach(ll => ll.OrderBy(lll => lll).ToList().ForEach(lll => Console.WriteLine(lll)));给你个更完善的
每条数据有3个[],并且保证前面数字一样的数据顺序不便date.Add("000d[d]d[d]ddd[3]dddddd");