Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ按字符串分组和计数分组属性';儿童财产_C#_Asp.net_Asp.net Mvc_Linq_Asp.net Mvc 5 - Fatal编程技术网

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
)的信息,以及一些示例记录和您期望的结果吗