You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中统计列表内相同ProductId的元素数量并将结果存入变量

统计列表中相同ProductId元素数量的实现方法

你需要遍历Product列表,统计每个ProductId对应的元素个数并赋值给指定变量,对吧?这里有几种简洁高效的实现方式,一起来看看:

首先先确认你的基础代码:

public class Product 
{ 
    public int ProductId { get; set; } 
    public string ProductName { get; set; } 
}

List<Product> productList = new() 
{ 
    new Product { ProductName = "item1", ProductId = 1}, 
    new Product { ProductName = "item2", ProductId = 1}, 
    new Product { ProductName = "item3", ProductId = 2}, 
    new Product { ProductName = "item4", ProductId = 2}, 
    new Product { ProductName = "item5", ProductId = 3}, 
    new Product { ProductName = "item6", ProductId = 1} 
};

方式一:用LINQ GroupBy+字典(推荐,高效灵活)

这种方法只需要遍历一次列表,就能统计所有Id的数量,适合需要统计多个Id的场景:

// 分组统计并转为字典:键是ProductId,值是对应元素的数量
var productCountDict = productList
    .GroupBy(product => product.ProductId)
    .ToDictionary(group => group.Key, group => group.Count());

// 从字典中取出对应Id的数量赋值给变量
// 用TryGetValue可以避免Id不存在时抛出异常,返回0作为默认值
int someProduct1 = productCountDict.TryGetValue(1, out var count1) ? count1 : 0;
int someProduct2 = productCountDict.TryGetValue(2, out var count2) ? count2 : 0;
int someProduct3 = productCountDict.TryGetValue(3, out var count3) ? count3 : 0;

如果能确定这些ProductId一定会出现在列表里,也可以直接用字典索引器取值,写法更简洁:

int someProduct1 = productCountDict[1];
int someProduct2 = productCountDict[2];
int someProduct3 = productCountDict[3];

方式二:直接用LINQ Count(简单直接)

如果只需要统计少数几个固定Id的数量,这种写法更直观,不需要额外创建字典:

int someProduct1 = productList.Count(p => p.ProductId == 1);
int someProduct2 = productList.Count(p => p.ProductId == 2);
int someProduct3 = productList.Count(p => p.ProductId == 3);

不过要注意:这种方式每调用一次Count都会遍历一次列表,如果你要统计的Id很多,效率会比第一种方式低。

这两种方式都能得到你想要的结果:someProduct1=3、someProduct2=2、someProduct3=1,根据你的实际需求选就行~

内容的提问来源于stack exchange,提问作者Jaracara11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:14:10