我正在使用此处的Ordering-By-String扩展: http://blog.cincura.net/229310-sorting-in-iqueryable-using-string-as-column-name/
在我的数据源中,某些对象可能为null,因此不具有EHR属性(参见屏幕截图)。
我如何捕获此案例?我仍然希望空值包含在有序列表中,但只是在底部或顶部。
有什么建议吗?
编辑:更多澄清......
所以我的KendoUI网格正在向服务器发回一个请求,以便按特定列进行排序。选择为orderby的列是“Month10.EHR”。 Month10是SubObject,EHR是属性。某些SubObjects不存在,因此没有属性,子对象将为null。执行排序时,它注意到一个记录不存在Month10,因此不能将其包含在orderby中。
我希望这是有道理的。
麦克
答案 0 :(得分:1)
使用Where
删除具有空订单键的元素,然后使用Concat
将其重新添加。
E.g。
IEnumerable List<Person> myList;
// ...
var orderedList = myList
.Where(p => p.Age != null)
.OrderBy(p => p.Age)
.Concat(myList.Where(p => p.Age == null));
再次阅读您的问题,您似乎意味着要排序的实际元素为空。在这种情况下,将它们列入清单的重点是什么?
答案 1 :(得分:1)
在OrderBy函数中测试null
。
IEnumerable<SomeType> myList;
// ...
var orderedList = myList.OrderBy(obj =>
obj == null
|| obj.Month10 == null
? defaultValue : obj.Month10.EHR);