按字段(int)排序.如果字段不是int
本文关键字:int 字段 如果 排序 | 更新日期: 2023-09-27 18:23:38
我的LINQ(在C#中)有问题。我需要按字段排序记录列表,该字段应该是int
,但有时不是:
from MyObject obj in new MyObject()
where obj.Visibile=="1"
orderby Int32.Parse(obj.Order) ascending
select obj;
而且,正如我所说,如果obj.Order不是int
,我会得到一个错误:System.FormatException:输入字符串的格式不正确
我想将非int项放在列表的末尾,而不会出现任何错误。有可能吗?
尝试使用TryParse
int myInt;
from obj in MYobjects
where obj.Visibile=="1"
orderby (int.TryParse(Str, out myInt) ? myInt: 0 )
select obj;
或
MYobjects.OrderBy(r => Number(r.str);
//private function
int Number(string str)
{
int result_ignored;
if (int.TryParse(str,out result_ignored))
return result_ignored;
else
return 0;
}
不要使用Int32.Parse,而是使用您自己创建的方法,该方法使用Int32.TryParse来尝试解析int。如果成功,则返回找到的数字,如果失败,则返回Int32.MaxValue以在最后获得该值。
from MyObject obj in new MyObject()
where obj.Visibile=="1"
orderby TryParse(obj.Order) ascending
select obj;
public int TryParse(string value)
{
int val;
if (Int32.TryParse(value, out val))
return val;
return Int32.MaxValue;
}
如果可能,请尝试在数据库IsInteger
中添加一列,该列在插入时存储顺序是否为整数。
因此,获取和排序整数和非整数订单将很容易。