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