C# 中一维数组按一定规则的排序

path路径下面有一堆xml文件,通过下面的GetFiles(stringpath)方法,返回一个文件列名的数组(如下):[0]{matr550_201203081758... path路径下面有一堆xml文件,通过下面的GetFiles(string path) 方法,返回一个文件列名的数组(如下):
[0] {matr550_20120308175850.xml}
[1] {matr550_20120309152025.xml}
[2] {matr550_20120313152027.xml}
[3] {matr550_20120314141837.xml}
[4] {matr900_20120308175850.xml}
[5] {matr900_20120309152025.xml}
[6] {matr900_20120313152027.xml}
[7] {matr900_20120314141837.xml}
但是这个不是我想要的排列方式,我想要的排列方式是先mart900_开头的在前面,matr550_开头的在后面,即(如下)
[0] {matr900_20120308175850.xml}
[1] {matr900_20120309152025.xml}
[2] {matr900_20120313152027.xml}
[3] {matr900_20120314141837.xml}
[4] {matr550_20120308175850.xml}
[5] {matr550_20120309152025.xml}
[6] {matr550_20120313152027.xml}
[7] {matr550_20120314141837.xml}

或者,可以将这个数组拆分成两个数组,一个是matr550_的一个是matr900的,给位大侠们,给跪了。。。
--------------------------------------------------
namespace BQbrDataTransfer.Common
{
public class GetFileList
{
public FileInfo[ ] GetFiles(string path)
{
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[ ] files = di.GetFiles();
FileComparer fc = new FileComparer( );
Array.Sort(files, fc);
return files;
}
}
}

public class FileComparer : IComparer
{
int IComparer.Compare(Object o1, Object o2)
{
FileInfo fi1 = o1 as FileInfo;
FileInfo fi2 = o2 as FileInfo;
return fi1.CreationTime.CompareTo(fi2.CreationTime);
}
}
}
这个问题已经解决了,感谢回答者
思路和你的一样,将原来的数组拆分成两个数组
files = gfl.GetFiles(s_fileLocation);
files得到下面数组
[0] {matr550_20120308175850.xml}
[1] {matr550_20120309152025.xml}
[2] {matr550_20120313152027.xml}
[3] {matr550_20120314141837.xml}
[4] {matr900_20120308175850.xml}
[5] {matr900_20120309152025.xml}
[6] {matr900_20120313152027.xml}
[7] {matr900_20120314141837.xml}
然后建立2个ArrayList ,通过ffor循环往这两个新ArrayList 添加元素
ArrayList str_550 = new ArrayList();
ArrayList str_900 = new ArrayList();
for (int i = 0; i < files.Length; i++)
{ string s_FileName;
s_FileName = files[i].Name.ToString();
if (s_FileName.Contains("matr550")) str_550.Add(s_FileName);
if (s_FileName.Contains("matr900")) str_900.Add(s_FileName);
}
展开
 我来答
ceo1160
2012-05-30 · TA获得超过224个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:196万
展开全部
//思路:首先,将源数据筛选,并分别添加到两个list中;
// 然后,将两个list分别排序;
// 最后,将排序好的list,循环添加到字符串数组中
try
{
//源数据
string[] mxmlfiles = { "mart900_0102.xml", "matr550_01024.xml", "mart900_0101.xml", "matr550_01025.xml" };
//分别存mart900和matr550开头的数据
List<string> listmart900 = new List<string>();
List<string> listmatr550 = new List<string>();
for (int i = 0; i < mxmlfiles.Length; i++)
{
//注意mnewstring的值
string mnewstring = mxmlfiles[i].Substring(0, 7);
if (string.Equals("mart900", mnewstring, StringComparison.CurrentCultureIgnoreCase))
{
listmart900.Add(mxmlfiles[i]);
}
else if (string.Equals("matr550", mnewstring, StringComparison.CurrentCultureIgnoreCase))
{
listmatr550.Add(mxmlfiles[i]);
}
}
//两个list分别排序
listmart900.Sort();
listmatr550.Sort();
string[] resultmart900 = new string[listmart900.Count];
for (int i = 0; i < listmart900.Count; i++)
{
resultmart900[i] = listmart900[i];
}
//listmatr550的数据你自己处理一下,呵呵~~~
}
catch
{

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式