我在ASP中编写查询。. NET Core使用PostgreSQL,我的目标是创建一个月销售报告,并将其存储在数据库中。
我的代码现在是查询所有的数据,我试图改变查询每月的数据。如何获取每月数据并将其保存到数据库?
Dictionary<long, int> countList = new();
foreach (var item in Repository.repoSales.GetAll().OrderBy(x => x.ID))
{
var ID = item.ID;
if (countList.ContainsKey(ID))
{
countList[ID]++;
}
else
{
countList[ID] = 1;
}
}
foreach (var entry in countList)
{
if (Repository.repoSales.Get(entry.Key).IsDeleted)
{
continue;
}
var Sales = Repository.repoSales.Get(entry.Key);
Sales.monthly = entry.Value;
Repository.repoSales.Update(project);
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
样本数据:
公司
苹果- 三星
- 小米
- Apple - 02/2023
- Samsung - 02/2023 苹果公司- 2022年9月小米- 12/2022
现在它返回(所有销售总额):
- 2(苹果)
- 1(三星)
- 1 (Xiamoi)
我想按月计算:
02/2023 - 2
09/2022 - 1
12/2022 - 1
我使用控制台应用程序运行这段代码
那么,假设您有这些数据:
var data = new []
{
new { ID = "Apple", Month = "02/2023" },
new { ID = "Samsung", Month = "02/2023" },
new { ID = "Apple", Month = "09/2022" },
new { ID = "Xiaomi", Month = "12/2022" },
};
那么这些是获取ID
计数和Month
计数的查询:
Dictionary<string, int> ids =
data
.GroupBy(x => x.ID)
.ToDictionary(x => x.Key, x => x.Count());
Dictionary<string, int> monthly =
data
.GroupBy(x => x.Month)
.ToDictionary(x => x.Key, x => x.Count());