LINQ查询未应用order by

时间:2014-10-17 15:47:58

标签: c# linq

这是我在C#中非常简单的linq查询

var latest = (from calc in context.db_accounts_last_contacts
    group calc by calc.account_id into calcGroup
    select calcGroup);

var ordered = (from calcg in latest
    let item = (from items in calcg
        orderby items.last_contact_date descending
        select items).FirstOrDefault()
    select item);

这是db_accounts_last_contacts的内容 Image

所以基本上我的查询应该返回这个 [0]应为行ID 13(因为我的有序查询中的last_contact_date顺序) 1应为行ID 2 [2]应该是第14行

基本上这确实有效,但是每次运行我的有序查询时,我总是会在我要拔出行ID 13时拉出行ID 2,

有人能看出为什么我的orderby没有在我的有序linq查询中使用吗?

更新

这是我现在的linq查询

var ordered = (from calcg in latest
    let item = (from items in calcg
        select items).FirstOrDefault()
    orderby item.last_contact_date descending
    select item);

但我仍然得到相同的结果

1 个答案:

答案 0 :(得分:3)

在这段代码中:

var ordered = (from calcg in latest
    let item = (from items in calcg
        orderby items.last_contact_date descending
        select items).FirstOrDefault()
    select item);

您的OrderBy正在.FirstOrDefault()之前应用,并且会返回一个项目。我理解为什么OrderBy存在;它决定了选择了哪个项目。但这不会产生最终的订购;如果您想要订购最终版本,则需要OrderBy之外的其他let