LINQ Group by并按选择列表中的降序获取日期

时间:2017-02-08 21:48:44

标签: c# asp.net asp.net-mvc linq asp.net-mvc-4

我正在试图找出为什么我的LINQ无法正常工作:

Products.GroupBy(x => x.ItemID).Select(x => new ResultItem()
{
    ID = x.Key,
    SaleNumber = x.Sum(y => y.QuantityPurchased),
    SaleEarning = x.Sum(y => y.QuantityPurchased * y.SalePrice),
    Title = x.Select(y => y.Title).FirstOrDefault(),
    CurrentPrice = x.OrderByDescending(y => y.TransactionDate)
        .Select(y => y.SalePrice).FirstOrDefault(),
    SalePrice = x.Select(y => y.SalePrice).FirstOrDefault()
}).ToList();

正如您所看到的,我有一个产品列表,我按照ItemID对它们进行分组,然后我尝试根据销售的最新日期为每个项目设置价格。

目前我在选择列表中CurrentPrice列的结果完全错误...我在这里做错了什么?

P.S。这是有问题的部分:

CurrentPrice = x.OrderBy(y => y.TransactionDate).Select(y => y.SalePrice).FirstOrDefault()

任何想法的人?

P.S2:

顺便说一下。我得到的日期是这样的:1/1/0001 12:00:00 AM ...在DB中,日期都设置正确,在C#中它们是日期时间类型......

当我做这样的事情时:

productTransactions.Where(x => x.ItemID == "//some id")
    .OrderByDescending(x => x.TransactionDate).ToList();

我得到了正确的结果。这些日期的订购方式与我想要的完全一样,但在这一组中它们完全混乱了......

0 个答案:

没有答案