C# 中,使用 LINQ 示例 备忘

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外, …
对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。

通常一副扑克牌包含四种花色,每种
花色包含 13 个值。 通常情况下,你可能会立即考虑创建一个 Card 类,然后手动填充一组 Card 对象。 相对于
通常的方式,使用 LINQ 创建一副扑克牌更加简捷。 可以创建两个序列来分别表示花色和点数,而非创建 Card
类。



var pairPoker = Enum.GetValues<Suit>().SelectMany(s => Enum.GetValues<PokerValue>().Select(p => new PokerCard(p, s))).ToArray();

var originalJson = pairPoker.DumpJson();
Console.WriteLine(originalJson);
//One Half Poker
var halfIndex = pairPoker.Length / 2;
var firstPairPoker = pairPoker[..halfIndex];
var SecondPairPoker = pairPoker[halfIndex..];

//shuffle
var shufflePoker = DoShuffle(firstPairPoker, SecondPairPoker).ToArray();
var shufflePokerJson = shufflePoker.DumpJson();
Console.WriteLine(shufflePokerJson);
Console.WriteLine(shufflePoker == pairPoker);
Console.ReadKey();


IEnumerable<PokerCard> DoShuffle(PokerCard[] one, PokerCard[] two)
{
    var first = one.GetEnumerator();
    var second = two.GetEnumerator();
    while (first.MoveNext() && second.MoveNext())
    {
        yield return (PokerCard)first.Current;
        yield return (PokerCard)second.Current;
    }
}

enum Suit
{
    /// <summary>
    /// 红桃
    /// </summary>
    Hearts,

    /// <summary>
    /// 方块
    /// </summary>
    Diamonds,

    /// <summary>
    /// 黑桃
    /// </summary>
    Spades,

    /// <summary>
    /// 梅花
    /// </summary>
    Clubs,
}

enum PokerValue
{
    Two,
    Three,
    Four,
    Five,
    Sex,
    Seven,
    Eight,
    Nine,
    Ten,
    J,
    Q,
    K,
    A,
}

record PokerCard(PokerValue Value, Suit Suit);

相关推荐

  1. C# 使用 LINQ 示例

    2024-07-16 01:56:03       22 阅读
  2. C#使用Linq

    2024-07-16 01:56:03       40 阅读
  3. C# 使用模式匹配 备

    2024-07-16 01:56:03       26 阅读
  4. C# 实现加减乘除 (

    2024-07-16 01:56:03       30 阅读
  5. 游戏服务端面试C++、Python)

    2024-07-16 01:56:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:56:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:56:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:56:03       58 阅读
  4. Python语言-面向对象

    2024-07-16 01:56:03       69 阅读

热门阅读

  1. vue2与vue3的区别

    2024-07-16 01:56:03       21 阅读
  2. 安卓热门面试题一

    2024-07-16 01:56:03       20 阅读
  3. 书籍跳跃游戏(4)0715

    2024-07-16 01:56:03       16 阅读
  4. livecd工具下载地址

    2024-07-16 01:56:03       18 阅读
  5. 网站架构核心要素

    2024-07-16 01:56:03       19 阅读
  6. postman实现接口关联

    2024-07-16 01:56:03       18 阅读
  7. IPython 使用技巧整合

    2024-07-16 01:56:03       19 阅读