求个 比较大小
0001.0002.0005.0012.0015
0001.0002.0005.0012.0017
0001.0002.0005.0011.0015
0001.0002.0003.0012.0015
比较的顺序是
0001.0002.0003.0012.0015
0001.0002.0005.0011.0015
0001.0002.0005.0012.0015
0001.0002.0005.0012.0017
------解决方案-------------------- 如果位数固定的话,直接linq就可以解决了
------解决方案-------------------- 把 点号 去掉 比较数值不可以吗?
------解决方案-------------------- string类可以直接比较啊,位数不同也可以
------解决方案-------------------- 给个示例
string data = "0001.0003.0009.002.0015";
List<string> datas = data.Split('.').ToList<string>();
datas.Sort(delegate(string str1, string str2)
{
int x = int.Parse(str1);
int y = int.Parse(str2);
return Comparer.Default.Compare(x, y);
});
------解决方案-------------------- 引用: 给个示例
string data = "0001.0003.0009.002.0015";
List<string> datas = data.Split('.').ToList<string>();
datas.Sort(delegate(string str1, string str2)
{
int x = int.Parse(str1);
int y = int.Parse(str2);
return Comparer.Default.Compare(x, y);
});
有必要转么?
好像string可以直接比的吧~~
------解决方案-------------------- 引用: Quote: 引用:
给个示例
string data = "0001.0003.0009.002.0015";
List<string> datas = data.Split('.').ToList<string>();
datas.Sort(delegate(string str1, string str2)
{
int x = int.Parse(str1);
int y = int.Parse(str2);
return Comparer.Default.Compare(x, y);
});
有必要转么?
好像string可以直接比的吧~~
LZ可以自行选择。从LZ贴出的数据看,数据是数值型的。所以转一下比较好
可以给个参考:
数据比较结果:0001.002,0003.0009.0015
字符串比较结果:0001,0003,0009,015,002
------解决方案-------------------- 放List排序后就可以了嘛
------解决方案-------------------- List<string> data = new List<string>()
{
"0001.0002.0005.0012.0015",
"0001.0002.0005.0012.0017",
...
};
var query = data.OrderBy(x => x.Split('.')[0])
.ThenBy(x => x.Split('.')[1])
.ThenBy(x => x.Split('.')[2])
.ThenBy(x => x.Split('.')[3])
.ThenBy(x&n