Linq语句没有从Management Studio中的sql select中复制数据
本文关键字:select sql 复制 数据 中的 Studio 语句 Management Linq | 更新日期: 2023-09-27 18:06:28
我正试图将以下查询从SQL转换为linq,但它不会在。net中产生与SQL Server管理工作室相同的结果集
/****** Script for SelectTopNRows command from SSMS ******/
SELECT TOP 6
[ID], [customerInfo], [IVACODE], [Contribution],
[DUE_DATE], [isActive], [isDeleted]
FROM
[portal].[dbo].[tblPortalContributionSchedule]
WHERE
customerInfo = '01F6B68B-6FC2-4F9D-B586-6934B8D6C979'
AND DUE_DATE <= '2016/09/26'
AND DUE_DATE <> '2016/09/26'
ORDER BY
DUE_DATE DESC
在我的linq中,我目前有以下比较:
public List<tblPortalContributionSchedule> getUserContributions(Guid _customerInfoId,DateTime _date)
{
List<tblPortalContributionSchedule> _contributions =
portalEntities.tblPortalContributionSchedules
.Where(a => a.customerInfo == _customerInfoId
&& a.isDeleted == false
&& a.DUE_DATE <= _date
&& a.DUE_DATE !=_date )
.Take(6)
.OrderByDescending(o=> o.DUE_DATE)
.ToList();
return _contributions;
}
我的回电是简单的
List<tblPortalContributionSchedule> _payments = _dal.getUserContributions(_customerId, Convert.ToDateTime("2016/09/26"));
这是我的数据的屏幕截图,但它没有产生预期的结果
https://snag.gy/3uKCPh.jpg我想知道是否有人可以帮助我把这个正确地转换为linq。
这是我应该得到的数据结果
https://snag.gy/OQrql8.jpg基本上我想要得到最后6笔付款;在7年内可能有30笔付款,但我只对客户基于当前月份的最后6笔付款感兴趣。
我们来解构一下:
portalEntities.tblPortalContributionSchedules
.Where(a => a.customerInfo == _customerInfoId)
1 -> .Where(a => !a.isDeleted)
.Where(a => a.DUE_DATE <= _date)
2 -> .Where(a => a.DUE_DATE != _date)
.OrderByDescending(a => a.DUE_DATE)
3 -> .Take(6)
.ToList();
- 比
== false
更具可读性 - 与其上面的语句冲突。如果您想排除它,请使用
<
。 - 将放在
OrderByDescending
之后。