C# LINQ按字符串分组和计数分组属性';儿童财产
我编写了如下代码:C# LINQ按字符串分组和计数分组属性';儿童财产,c#,asp.net,asp.net-mvc,linq,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Linq,Asp.net Mvc 5,我编写了如下代码: Session["priceRange"] = ranges.Select(r => new PriceRangeGraph { Price = Math.Round(r, 2), Sales = lista.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).Sum(
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(),
在sales property中,您可以看到,我找到了物品销售的价格范围,然后我简单地将给定范围内的所有销售额相加
现在我想看看有多少成功/不成功的用户(使用他们的用户名)在给定范围内进行了销售
So for example user test123 made 5 sales, test1234 made 4 sales, test56 made 0 sales in range 0-20$
该范围的输出为:
SuccessfulSellers=2
UnSuccessfulSellers = 1
上面我尝试的代码根本没有给我正确的结果
如您所见,我正在按用户的用户名进行分组,以获取发生数,然后筛选用户进行销售的范围,然后简单地添加另一个and语句以筛选出销售额=0和销售额超过0的用户
我在这里做错了什么?我认为你的问题是行动的顺序问题。一旦你分组,你实际上正在处理一个更复杂的数据结构:基本上是一个列表列表。将您的团队保存到过滤器之后,您的生活将变得更加轻松 例如:
allSales.Where(m => m.Price >= 0 && m.Price <= 20)
.GroupBy(m => m.User)
.Select(m => new { User = m.Key, Sales = m.Count() });
allSales.Where(m=>m.Price>=0&&m.Price m.User)
.Select(m=>new{User=m.Key,Sales=m.Count()});
Chriss,我真的不能为reach range=(…有没有办法将此逻辑合并到我编写的现有查询中?有人吗?=)您能提供更多关于您的模型是什么(ranges
和lista
)的信息,以及一些示例记录和您期望的结果吗