实体框架排序根据2列同时进行

时间:2015-04-14 11:46:39

标签: c# entity-framework lambda

我在开发我们的系统的时候在某个地方徘徊。我有2个不同的日期时间列DateModified和DateCreated。我想同时根据这两列对数据进行排序。等;

Id Name DateCreated DateModified
-------------------------------------------------- ------
1阿里2015-01-01 2015-02-02
2 Veli 2015-01-02 2015-02-03
3 Mehmed 2015-02-01 2015-02-05
4 Ahmed 2015-02-04 null

当我想通过这些数据降序时,它应该给我

的结果

3 Mehmed
4艾哈迈德
2 Veli
1阿里

那么......这样做的方法是什么?感谢

3 个答案:

答案 0 :(得分:4)

根据我的理解,您希望结果按两个日期排序为单个属性,而不是使用ThenBy吗?

不是LINQ专家,但我认为这应该有效:

var Result = Items.OrderBy(x=> x.DateModified==null ? x.DateCreated : x.DateModified);

编辑:

这假设修改日期始终在创建日期之后。在一般情况下,它看起来像这样:

var Result = Items.OrderBy(x=> x.A >= x.B ? x.A : x.B);

答案 1 :(得分:2)

使用OrderByThenBy

var Result = Items.OrderBy(x => x.DateModified).ThenBy(x => x.DateCreated);

答案 2 :(得分:0)

如果Ahmed是第二名,那么你可以使用DateCreated而不是null: Items.OrderBy(a => a.DateModified != default(DateTime?) a.DateModified: a.DateCreated);