1

私は LINQ に慣れていません。誰か助けてもらえますか? 前もって感謝します。

私のモデル:

public class OrderOverViewModel
{
    public int Quantity { get; set; }
    public String ACCN { get; set; }
    public DateTime OrderDate { get; set; }
}

そして、これはSQLです:

SELECT COUNT(*) AS HowMany, 
       DATEADD(dd, 0, DATEDIFF(dd, 0, RXS_OrderDate)) AS OrderDate, 
       RXS_ACCN  AS ACCN  
FROM RXS_RxJobs
WHERE DATEDIFF(WK, RXS_OrderDate, GETDATE()) = 1
GROUP BY RXS_ACCN, DATEADD(dd, 0, DATEDIFF(dd, 0, RXS_OrderDate))

SSMS での結果:

ここに画像の説明を入力

選択結果でモデルを埋めたいのですが、これを達成するにはどうすればよいですか? 再度、感謝します。

4

2 に答える 2

3

SqlFunctions.DateDiffメソッドを使用して、現在の日付と注文日の間の週を取得します。Dateまた、オブジェクトのプロパティを介して日付の日付部分を簡単に取得できDateTimeます。クエリは次のようになります。

from j in context.RXS_RxJobs
    .Where(x => SqlMethods.DateDiffDay(x.RXS_OrderDate, DateTime.Now) >= 7 &&
                SqlMethods.DateDiffDay(x.RXS_OrderDate, DateTime.Now) < 14)
group j by new { j.RXS_ACCN, j.RXS_OrderDate.Date } into g
select new OrderOverViewModel
{
   Quantity = g.Count(),
   ACCN =  g.Key.RXS_ACCN,
   OrderDate = g.Key.Date  
};

UPDATE(エンティティへのLinqの場合):

from j in context.RXS_RxJobs
    .Where(x => SqlFunctions.DateDiff("wk", x.RXS_OrderDate, DateTime.Now) == 1)
group j by new { 
    j.RXS_ACCN, 
    Date = EntityFunctions.TruncateTime(j.RXS_OrderDate).Value
} into g
select new OrderOverViewModel {
   Quantity = g.Count(),
   ACCN =  g.Key.RXS_ACCN,
   OrderDate = g.Key.Date 
};
于 2013-03-13T11:19:50.033 に答える
0
var viewModels = from job in ObjectContext.RXS_RxJobs
where SqlFunctions.DateDiff("Day", RXS_OrderDate,DateTime.Now) == 1
group job by new { RXS_ACCN, OrderDate} into jobGroup
select new OrderOverViewModel
{ 
    Quantity = jobGroup.Count(),
    ACCN =  jobGroup.Key.RXS_ACCN,
    OrderDate = jobGroup.Key.OrderDate
} ;
于 2013-03-13T11:06:20.273 に答える