for 循环可以分类统计成这样吗
效果是从A变成B
如果是数据库很简单直接group by
程序中定义一个model 包含名称和份量 这样是比较容易操作的
不是从数据库读取,这个很容易
在数组里,通过算法,转成这样的格式
@多啦C梦: 对呀 就是在数组中呀 你将数据转换一下 成一个List
@初夏的阳光丶能写出来么: 能写出来么:
@多啦C梦: https://blog.csdn.net/e295166319/article/details/77943489 类似这篇文章 可以参考一下
参见Linq GroupBy函数就行了,根本不用写,现成的。
using System; using System.Collections.Generic; using System.Linq; namespace blogs { class Program { static void Main(string[] args) { var orderItems = new List<OrderItem>() { new OrderItem(){ GoodsName="鸭(包杀)", Quantity=1 }, new OrderItem(){ GoodsName="鸭(不包杀)", Quantity=1 }, new OrderItem(){ GoodsName="苹果", Quantity=1 }, new OrderItem(){ GoodsName="鸭(包杀)", Quantity=1 } }; var result = orderItems.GroupBy(m => m.GoodsName).Select(m => new { GoodsName = m.Key, Quantity = m.Count() }).OrderByDescending(m => m.Quantity); foreach (var item in result) { Console.WriteLine($"商品名: {item.GoodsName} 份数: {item.Quantity}"); } } } class OrderItem { // 商品名, public string GoodsName { get; set; } //份数 public int Quantity { get; set; } } }
for 和 map<String,Integer> 就行了
使用for循环所用的数据 ,判断map中是否存在正在循环的数据,存在就integer+1 不存在就把数据插入map键,值默认为1,如果需要输出,那就使用遍历map
for循环里增加判断就能实现