删除重复行与List <t>具有相同的日期时间

时间:2015-08-17 12:55:37

标签: c# asp.net-mvc group-by

我有2个参数的列表&#39; s(动态)

  • DateTime OrderDate
  • 十进制TotalPrice

每个列表可能具有相同的datetime和不同的price

- DateTime -- Price
- 10/10/10 -- 100
- 11/11/11 -- 111
- 11/11/11 -- 100
- 10/10/10 -- 122
- etc 

现在我需要将它们结合起来。因为我只看到1个日期时间和1个价格

- DateTime -- Price
- 10/10/10 -- 222
- 11/11/11 -- 211
- etc  

这里是代码

var data = db.CheckOut.Where(x => x.ISOrderComplete == true).OrderBy(c => c.Order.OrderDate).ToArray()
    .GroupBy(y => new { OrderDate = y.Order.OrderDate, TotalPrice = y.TotalPrice })
    .Select(a => new { OrderDate = a.Key.OrderDate, TotalPrice = a.Key.TotalPrice })
    .ToList();

我尝试添加函数

var data = db.CheckOut.Where(x => x.ISOrderComplete == true).OrderBy(c => c.Order.OrderDate).ToArray()
    .GroupBy(y => new { OrderDate = y.Order.OrderDate, TotalPrice = y.TotalPrice })
    .Select(a => new { OrderDate = a.Key.OrderDate, TotalPrice = a.Sum(b => b.TotalPrice) })
    .ToList();   

我该怎么办?

  

我在db中不需要这笔钱。我需要这笔钱来显示图表中有关公司的统计数据,所以我需要将每个数据相加得多少。

3 个答案:

答案 0 :(得分:1)

var data = db.CheckOut.Where(x => x.ISOrderComplete == true)
                .GroupBy(y => new { OrderDate = y.Order.OrderDate})
                .Select(a => new { OrderDate = a.Key.OrderDate, TotalPrice = a.Sum(b => b.TotalPrice)})
                .OrderBy(c => c.Order.OrderDate)
                .ToList();

答案 1 :(得分:1)

遵循deramko方法,唯一缺少的是您不应按OrderDate分组,而应OrderDate.Date分组,因为时间可能不同。

尝试这样的事情:

var data = db.CheckOut.Where(x => x.IsCheckoutComplete)
        .GroupBy(x => new { OrderDate = x.Order.OrderDate.Date})
        .Select(a => new { OrderDate = a.Key.OrderDate, TotalPrice = a.Sum(b => b.Order.TotalPrice)})
        .OrderBy(c => c.OrderDate)
        .ToList();

您可以在https://dotnetfiddle.net/3mrZkf

上查看

答案 2 :(得分:0)

在Linq我们不能分组orderdate.date所以我把它分开了。然后我们可以通过date订购。

public JsonResult TotalIncomeJson()
        {

           var tempD = db.CheckOut.Where(x => x.ISOrderComplete).ToList();
           var data = tempD.GroupBy(x => x.Order.OrderDate.Date).Select(y => new { OrderDate = y.Key, TotalPrice = y.Sum(a => a.TotalPrice) })
            .OrderBy(b=>b.OrderDate.Year).ToList();

           return Json(data, JsonRequestBehavior.AllowGet);
         }