LINQ / Lambda .OrderBy(日期类型).ThenBy(枚举类型)

时间:2015-02-23 20:53:45

标签: c# linq enums lambda

我有以下代码:

transactionBindingSource.DataSource = context.Transactions
                .Where(t => t.Date >= BeginningDate &&
                        t.Date <= EndDate)
                .OrderBy(t => t.Date)
                .ThenBy(t => t.TransactionType)
                .ToList();  

这是一个交易清单。我想先按日期,然后按类型订购交易。类型是我创建的枚举。枚举可以通过存款或提款。

枚举代码:

enum CashFlowTransactionType
{
    Deposit = 10,
    Withdrawal = 20
}

当我从这个列表中获取数据网格时,它按日期和事务类型进行排序,但它会在存入之前进行提取。我需要存款在提款前发布。我认为它会按枚举值对其进行排序,这就是我存款10和提款20的原因。但事实并非如此。

提前致谢。

2 个答案:

答案 0 :(得分:1)

通过删除Date属性的时间部分解决了这个问题。

答案 1 :(得分:0)

将您的枚举定义为:

public enum CashFlowTransactionType : int
{
    Deposit = 10,
    Withdrawal = 20
}

然后将其称为:

transactionBindingSource.DataSource = context.Transactions
            .Where(t => t.Date >= BeginningDate && t.Date <= EndDate)
            .OrderBy(t => t.Date)
            .ThenBy(t => (int)t.TransactionType)
            .ToList();