我想订购一个属性为null的集合,但如果不使用整数属性。
repeaterEmployees.DataSource = employees.Distinct(new EmployeeComparer())
.OrderBy(x => x.Status ?? x.Status.ID);
repeaterEmployees.DataBind();
Employees是一个扩展List`Employee的类。并且Employee具有属性状态,该状态来自类Status
我在OrderBy方法中收到一条消息“运算符??不能应用于Status和int类型的操作数”
答案 0 :(得分:4)
如果-1
为Status
,则您可以使用null
(或您知道的有效ID范围之外的任何其他值):
repeaterEmployees.DataSource =
employees.Distinct(new EmployeeComparer())
.OrderBy(x => x.Status == null ? -1 : x.Status.ID );
答案 1 :(得分:0)
如果这是来自SQL DB你应该没问题,如果调用数据库就不会发生空引用。如果您只是调用order by,默认情况下nulls将返回到顶部。
repeaterEmployees.DataSource = employees.Distinct(new EmployeeComparer())
.OrderBy(x => x.Status.ID);
repeaterEmployees.DataBind();
如果您从linq调用对象,则必须检查null
repeaterEmployees.DataSource = employees.Distinct(new EmployeeComparer())
.OrderBy(x => x.Status == null ? -1 : x.Status.ID);