我在对象的子属性上执行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< PersonModel> 。如果在此处调试,则此时显示正确的数据。
然后我在检索到的数据上执行OrderBy,它正在崩溃。
var tmp = result.OrderBy(x => x.Dept.DeptName)。ToList();
我不确定为什么会收到此错误。任何有关解决问题的建议都非常感谢。
答案 0 :(得分:1)
您需要确保在默认比较中未使用null
。这是一个简单的例子:
var tmp = result.OrderBy(x => ((x.Dept == null) || (x.Dept.Deptname == null)) ? "" : x.Dept.DeptName).ToList();
如果你想要一个非常好的解决方案,你应该实现自己的比较器在这里看到更多: