![](/img/trans.png)
[英]C# FirstOrDefault() not working even with using System.Linq
[英]sql Top 1 vs System.Linq firstordefault
我正在用C#重写SProc。 问题是在SProc中有这样的查询:
select top 1 *
from ClientDebt
where ClinetID = 11234
order by Balance desc
例如:我有一个有3笔债务的客户,他们所有人都有相同的余额。 债务编号为:1,2,3
该查询的C#等效项是:
debts.OrderByDescending(d => d.Balance)
.FirstOrDefault()
债务代表客户3笔债务
有趣的部分是sql返回带有Id 2的债务,但是c#代码返回ID1。Id1对我来说很有意义,但是为了保持代码功能相同,我需要更改c#代码以返回中间的代码。
我不确定sql top 1后面有几行与查询匹配的逻辑是什么。
该查询将选择一个债务并更新数据库。 我希望linq用sql返回相同的结果
谢谢
debts.OrderByDescending(d => d.Balance).ThenByDescending(d => d.Id)
.FirstOrDefault()
您可以启动SQL事件探查器,执行存储过程,查看结果,然后捕获查询通过linq发送的应用程序,然后再次查看结果。
另外,您可以轻松查看过程的执行计划,并尝试对其进行优化,但是使用linq查询,您将无法轻松地做到这一点。
AFAIK,在SQL中,如果选择不带ORDER BY的行,它将基于主键对结果集进行排序。 使用Order BY CLAUSE [field],隐式下一个订单是[primarykey]。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.