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

C#中如何打印Linq处理后List的重复值而非类型名?

解决Three Or More游戏重复值打印问题

问题根源

你的代码输出System.Collections.Generic.List1[System.Int32]`是因为:

  • 在foreach循环中,你直接打印了整个player1dicerolls列表对象,而非Linq分组后得到的重复值信息。
  • string.Join()方法仅执行但未将结果输出到控制台。

修正后的代码

1. 优化掷骰逻辑(可选但更高效)

不需要每次循环都创建新的Die实例,因为类内的Random是静态的,复用一个实例即可:

Die dice = new Die();
for (int i = 0; i < 5; i++)
{
    int x = dice.Roll();
    Console.ReadLine();
    Console.WriteLine($"One dice rolled a {x}");
    player1dicerolls.Add(x);
}

2. 正确打印重复值信息

修改foreach循环内的输出语句,使用Linq分组后的value对象获取重复点数和次数:

// 打印重复的点数及其出现次数
foreach (var value in player1dicerolls.GroupBy(x => x)
    .Where(g => g.Count() > 1)
    .Select(y => new { Element = y.Key, Counter = y.Count() })
    .ToList())
{
    Console.WriteLine($"点数{value.Element}重复出现了{value.Counter}次");
}

// 打印所有掷骰结果(可选)
Console.WriteLine($"所有掷骰结果:{string.Join(", ", player1dicerolls)}");

输出示例

假设掷骰结果是[2,2,3,3,3],输出会是:

点数2重复出现了2次
点数3重复出现了3次
所有掷骰结果:2, 2, 3, 3, 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:03:17