对对象的子属性执行排序时出错

本文关键字:排序 出错 执行 属性 对象 | 更新日期: 2023-09-27 18:08:55

我在对象的子属性上执行OrderBy时遇到问题。

我有两个独立的模型,如下所示:

PersonModel:

public class PersonModel 
{
   public string Name { get; set;}
   public DeptModel Dept { get; set; }
}

DeptModel

public class DeptModel 
{
   public int DeptId { get; set;}
   public string DeptName { get; set;}
}

我已经使用了automapper来映射这两个类之间的关系,并且我能够正确地检索数据。

在检索数据之后,我试图通过在DeptName对象上使用linq来实现订单。然后显示错误"对象引用未设置为对象的实例"。

结果是检索数据IList 。如果这里是Debug,此时显示的数据是正确的。

然后我对检索到的数据执行OrderBy,它在这里崩溃了。

var TMP = result。order (x => x. department . deptname).ToList();

我不知道为什么我得到这个错误。对于解决这个问题的任何建议都是非常感谢的。

对对象的子属性执行排序时出错

您需要确保在默认比较中没有使用null。这是一个简单的例子:

var tmp = result.OrderBy(x => ((x.Dept == null) || (x.Dept.Deptname == null)) ? "" : x.Dept.DeptName).ToList();

如果你想要一个真正好的解决方案,你应该实现你自己的比较器。

使用自己的IComparer<</p>