2016-09-11 2 views
-1

私は、LINQにSQLから次のクエリを変換しようとしていますが、それは、SQL Server Management StudioでLINQのステートメントは、Management StudioでSQLのSELECTからのデータを再生しない

/****** 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 
であるとして、それは.NETで同じ結果セットを生成していないです私の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")); 
です誰かがLINQにこれを適切に変換する際に私を助けることができれば、私は思っていた10

これは、データ私の画面のグラブであるが、そのは

https://snag.gy/3uKCPh.jpg

望ましい結果を生成していません。

これは、データが基本的に私は最後の6回の支払いを取得したい私は

https://snag.gy/OQrql8.jpg

を取得しなければならない結果です。 7年間にわたって30回の支払いが行われる可能性がありますが、私は今月に基づいて顧客の最後の6回の支払いにのみ関心があります。

+0

投稿した2つの画像リンクは同じです。 – Ocelot20

答えて

1

はのは、解体してみましょう:

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. の後にOrderByDescendingの後に置きます。
関連する問題