自学内容网 自学内容网

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);

原文地址:https://blog.csdn.net/weixin_43542114/article/details/140357327

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!