我正在试图找出为什么我的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();
我得到了正确的结果。这些日期的订购方式与我想要的完全一样,但在这一组中它们完全混乱了......