【发布时间】:2017-07-26 13:02:49
【问题描述】:
我写了如下代码:
Session["priceRange"] = ranges.Select(r => new PriceRangeGraph
{
Price = Math.Round(r, 2),
Sales = lista.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).Sum(x => x.SaleNumber),
SuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() > 0).Count(),
UnSuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() == 0).Count(),
}).ToList();
这是有问题的两行代码:
SuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() > 0).Count(),
UnSuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() == 0).Count(),
如您所见,在销售属性中,我正在查找商品的销售价格范围,然后我简单地将给定范围内的所有销售额相加。
现在我正在尝试查看有多少成功/不成功的用户(使用他们的用户名)在给定范围内进行了销售。
So for example user test123 made 5 sales, test1234 made 4 sales, test56 made 0 sales in range 0-20$
这个范围的输出是:
SuccessfulSellers=2
UnSuccessfulSellers = 1
我试过的上面的代码根本没有给我正确的结果......
如您所见,我按用户的用户名分组以获取出现次数,然后过滤用户进行销售的范围,然后简单地添加另一个和语句以过滤掉 =0 销售和销售额超过 0 的那些...
我在这里做错了什么?
【问题讨论】:
-
有人吗? =)
-
您能否提供更多关于您的模型的信息(
ranges和lista),也许还有一些示例记录以及您期望的结果
标签: c# asp.net asp.net-mvc linq asp.net-mvc-5