这是我在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的内容
所以基本上我的查询应该返回这个 [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);
但我仍然得到相同的结果
答案 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
。