List<T> 类型排序:
public List<ProductionMaterialModel> OrderBybom(List<ProductionMaterialModel> bommodel, bool prace)
{
List<ProductionMaterialModel> bomlist = new List<ProductionMaterialModel>();
try
{
if (bommodel != null && bommodel.Count > 0)
{
var is_stringa = 0;
var is_stringb = 0;
bommodel.Sort((a, b) =>
{
string ia = Regex.Match(a.place_no, @"\d+$").Value;//正则匹配时否是整数开头
string ib = Regex.Match(b.place_no, @"\d+$").Value;
int.TryParse(a.place_no, out is_stringa);//验证字符串是否包含数字,0 false,1 true
int.TryParse(b.place_no, out is_stringb);
return (ia != "" && ib != "" && is_stringa != 0 && is_stringb != 0) ? int.Parse(a.place_no) - int.Parse(b.name) : string.Compare(a.name, b.name);//判断比较的两个string是否是空值或字符串如果不是则按数字排序,排序结果顺序为:字符—数字—字母—汉字
});
foreach (var item in bommodel)
{
if (!string.IsNullOrWhiteSpace(item.place_no))
{
bomlist.Add(item);//剔除为空的string
}
}
if (prace)
{
bomlist.Reverse();//将整个集合的元素反转
}
bomlist.AddRange(bommodel.Where(p => string.IsNullOrWhiteSpace(p.place_no)).ToList());//累加为空的string持续放到最后
}
}
catch (Exception ex)
{
throw;
}
return bomlist;
}
--供个人学习使用