c# - 需要 foreach 到 linq 表达式帮助
问题描述
将以下代码写入一些更好/更少的行时遇到了一些麻烦:)
有人有好的解决方案吗?
//custom implementation for popular filters
var popularFilter = new Dictionary<string, int>();
foreach (var car in allFilteredCars)
{
foreach (var offering in car.Offerings)
{
if (popularFilter.ContainsKey(offering))
popularFilter[offering] = popularFilter[offering] + 1;
else
popularFilter.Add(offering, 1);
}
}
categories.Add(new Category
{
Name = "popular",
Code = "popular",
Values = popularFilter.Select(p => new Value
{
Code = p.Key,
Name = p.Key,
Count = p.Value
}).ToList()
});
如果可能的话,我希望我直接将其添加到categories
列表中。
car.offerings
=list<string>
所以基本上是这样的:
Categories.Add(allFilteredCars.SelectMany(
c => c.Offerings.Select(
o => new {
something magical here}
.Select(a =>
new Category{
code.. etc etc..}
));
解决方案
看起来您只想做 aSelectMany
来获取产品,然后对它们进行分组并选择Count
.
categories.Add(new Category
{
Name = "popular",
Code = "popular",
Values = allFilteredCars.SelectMany(c => c.Offerings)
.GroupBy(o => o)
.Select(grp => new Value
{
Code = grp.Key,
Name = grp.Key,
Count = grp.Count()
}).ToList()
});
推荐阅读
- php - 如何列出 pecl 包的所有版本
- javascript - Javascript 解码器
- javascript - 如何移动到 CSS 轮播上的下一张/上一张幻灯片?
- amazon-web-services - Lambda call S3 get public access block using boto3
- excel - Excel:如何在空白值导致比例加权变化的情况下取加权平均值
- react-native-navigation - 在屏幕之间移动时反应导航抛出错误
- javascript - 从javascript中的对象数组中一次选择一个项目
- python - 使用数组访问多个条目小部件
- pytorch - RuntimeError:CUDA 错误:python 3.7 未指定的启动失败
- sql-server - SQL批量插入制表符分隔文件的问题