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笔付款感兴趣。

Linq语句没有从Management Studio中的sql select中复制数据

我们来解构一下:

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();
  1. == false
  2. 更具可读性
  3. 与其上面的语句冲突。如果您想排除它,请使用<
  4. 放在 OrderByDescending之后。