1

我在这里使用按字符串排序的扩展:http: //blog.cincura.net/229310-sorting-in-iqueryable-using-string-as-column-name/

在我的数据源中,某些对象可能为空,因此不具有 EHR 的属性(参见屏幕截图)。

我怎样才能捕捉到这种情况?我仍然希望空值包含在有序列表中,但只是在底部或顶部。

有什么建议么?

编辑:更多澄清..

所以我的 KendoUI 网格正在向服务器发送一个请求以按特定列排序。选择排序的列是“Month10.EHR”。Month10 是一个子对象,而 EHR 是属性。一些子对象不存在,因此没有属性,子对象将为空。在执行排序时,它注意到一条记录不存在 Month10,因此无法将其包含在 orderby 中。

我希望这是有道理的。

麦克风

错误

4

2 回答 2

2

用于Where删除具有空顺序键的元素,然后用于Concat重新添加它们。

例如

IEnumerable List<Person> myList;
// ...
var orderedList = myList
    .Where(p => p.Age != null)
    .OrderBy(p => p.Age)
    .Concat(myList.Where(p => p.Age == null));

从再次阅读您的问题来看,您的意思似乎是被排序的实际元素为空。在这种情况下,将它们包含在列表中有什么意义?

于 2013-05-07T07:20:14.443 回答
1

null在 OrderBy 函数中进行测试。

IEnumerable<SomeType> myList;
// ...
var orderedList = myList.OrderBy(obj =>
                    obj == null 
                    || obj.Month10 == null 
                  ? defaultValue : obj.Month10.EHR);
于 2013-05-07T07:29:42.720 回答