2016-11-25 6 views
0

特定の日付に購入された注文のリストがあります。日時と合計によるLINQグループ

public class StoreAnalyticOrders 
    { 
     public DateTime OrderDate { get; set; } 
     public float AmountPaid { get; set; } 

    } 

そして、私は「GraphListと呼ばれているリストを入力します。私はこのようになりますクラスを作った...それらを合計し、その後1日(同日に行われた購入)にグループにそれらすべてを必要とし、 「私は私がちょうど述べたものを実行しようとした結果...

LINQであり:

var result = GraphList 
     .GroupBy(l => l.OrderDate) 
     .Select(cl => new StoreAnalyticOrders 
     { 
      AmountPaid = cl.Sum(c => c.AmountPaid), 
     }).ToList(); 

しかし、いくつかの理由のために日付が悪い形式です(彼らは失われている)と、それらが示しますこのようにしてください:

1/1/0001 12:00:00 AM 

、これは注文日のプロパティの以前の形式である:私はここで間違って

11/21/2016 6:05:32 AM 

何をしているのですか?

編集:@Ivan Stoevはあなたがメンター何これです:

var result = GraphList 
        .GroupBy(l => l.OrderDate.Date) 
        .Select(cl => new StoreAnalyticOrders 
        { 
         OrderDate = cl.Key, 
         AmountPaid = cl.Sum(c => c.AmountPaid) 
        }).ToList(); 
+0

最初'DateTime'で直ちにグループ化すべきではありません。 'l.OrderDate.Date'でグループ化する必要がありますので、時間、分、秒、ミリ秒のパーツをトリミングします。したがって、あなたは一日にすべての購入をグループ化しています。 –

+0

あなたは日付を読むのを忘れました。 'OrderDate = cl.Key、AmountPaid = ...' –

+0

@ M.kazemAkhgary私は今それをやった... Ivan私はあなたのsuggesitonで私の質問を編集...それは? – User987

答えて

0

あなたはエンティティクエリにLINQの日時に変更を加え、そしてあなたがDbFunctionsを使用する必要があります使用することはできません。

GraphList.GroupBy(gl => DbFunctions.TruncateTime((DateTime)gl.Datetime)). 
Select(gl=> new{ 
    Date = DbFunctions.TruncateTime((DateTime)gl.FirstOrDefault().Datetime), 
    TotalAmountPaid = gl.Sum(x=> x.AmountPaid) 
}).ToList(); 
関連する問題