c# - 如何从某些行求和
问题描述
我正在尝试显示在特定日期售出的商品数量。销售明细数据看这个
销售编号 | 详细信息 ID | 项目 | 数量 | 销售日期 |
---|---|---|---|---|
0 | 0 | 面条 | 1 | 17/02/2021 |
0 | 1 | 汉堡包 | 1 | 17/02/2021 |
0 | 2 | 沙拉 | 1 | 17/02/2021 |
1 | 3 | 薯条 | 1 | 18/02/2021 |
2 | 4 | 面条 | 1 | 18/02/2021 |
2 | 5 | 面条 | 1 | 18/02/2021 |
3 | 6 | 薯条 | 1 | 19/02/2021 |
4 | 7 | 面条 | 1 | 19/02/2021 |
5 | 8 | 面条 | 1 | 20/02/2021 |
它是从其他表中加入的,基本上如上所示。
最终商品销售表将搜索 [userInputDate1] 和 [userInputDate2] 之间的条目并简化它。
这是用户输入 17/02/21 和 18/02/21 时应该显示的内容。
项目 | 已售商品 |
---|---|
面条 | 3 |
汉堡包 | 1 |
沙拉 | 1 |
沙拉 | 1 |
我试过 linq 查询
SELECT Items, SUM(Quantity) AS TQuantity
FROM PosView
WHERE (salesDate > @userInputDate1) AND (salesDate < @userInputDate2)
GROUP BY Items
但它不会显示在datagridview中。
如果我找不到更简单的解决方案,我将使用 for /foreach 以编程方式计算 datagridview 中的项目
解决方案
请参阅以下内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Globalization;
namespace ConsoleApplication181
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("SalesID", typeof(int));
dt.Columns.Add("DetailID", typeof(int));
dt.Columns.Add("Items", typeof(string));
dt.Columns.Add("Quantity", typeof(int));
dt.Columns.Add("salesDate", typeof(DateTime));
dt.Rows.Add(new object[] {0, 0, "noodles",1, DateTime.ParseExact("17/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {0, 1, "burger",1, DateTime.ParseExact("17/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {0, 2, "salad",1, DateTime.ParseExact("17/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {1, 3, "fries",1, DateTime.ParseExact("18/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {2, 4, "noodles",1, DateTime.ParseExact("18/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {2, 5, "noodles",1, DateTime.ParseExact("18/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {3, 6, "fries",1, DateTime.ParseExact("19/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {4, 7, "noodles",1, DateTime.ParseExact("19/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
dt.Rows.Add(new object[] {5, 8, "noodles",1, DateTime.ParseExact("20/02/2021", "dd/mm/yyyy", CultureInfo.InvariantCulture)});
DataTable dt2 = new DataTable();
dt2.Columns.Add("Items", typeof(string));
dt2.Columns.Add("ItemsSold", typeof(int));
var groups = dt.AsEnumerable().GroupBy(x => x.Field<string>("Items")).ToList();
foreach (var group in groups)
{
dt2.Rows.Add(new object[] {group.Key, group.Count()});
}
}
}
}
推荐阅读
- c - 如何从 C 中的 char 数组中获取单个单词?
- python-3.x - 生成列表中所有可能的项目组合并将它们存储在不同的列表中,并在以后访问它们。我在下面举了一个例子
- python - Python将字典元组列表转换为数据框
- java - 使用 java replace 方法替换字符串中的字符
- java - Spring JPA 中的 SQL 聚合 GROUP BY 和 COUNT
- powershell - Powershell 在 foreach 运行之前打印文本
- javascript - 按 mongoose-aggregate-paginate-v2 更改顺序排序
- r - 如何在 r 的下半小时内测试同一用户?
- jupyter-notebook - 解释 google ccolab 中的 GUI 注释
- html - Better solution to display title-Attributes in "disabled"