c# - 比较 List 中的所有项目并返回新列表

标签 c# linq list compare

我有一个对象数组

List<Card> cardsOnTheScreen = new List<Card>(5);

每张卡片都有 enum Honurs 字段,有 14 种荣誉(Jack、Queen 等)谁能帮我找出哪些元素在屏幕上不止一次出现?输出应该是例如两张或更多同种荣誉的卡片列表。

最佳答案

Honurs 分组,按计数过滤,然后从组中获取卡片:

var result = cardsOnTheScreen
    .GroupBy(c => c.Honurs)
    .Where(g => g.Count() > 1)
    .SelectMany(g => g);

这是一个例子。假设我们有这样的设置:

public enum Honours { Ace, One, Jack, Queen, King }
public enum Suit { Clubs, Diamonds, Hearts, Spades }

public class Card
{
    public Honours Honours { get; set; }
    public Suit Suit { get; set; }
}

然后我们有一个填满卡片的列表:

List<Card> cardsOnTheScreen = new List<Card>
{
    new Card { Honurs = Honurs.Ace, Suit = Suit.Clubs },
    new Card { Honurs = Honurs.Ace, Suit = Suit.Hearts },
    new Card { Honurs = Honurs.Ace, Suit = Suit.Spades },
    new Card { Honurs = Honurs.One, Suit = Suit.Clubs },
};

使用上面的代码,将给出输出:

Ace, Clubs
Ace, Hearts
Ace, Spades

关于c# - 比较 List 中的所有项目并返回新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31157261/

相关文章:

c# - 带有连接子句的 linq 中的不同值

c# - 手动添加参数?

c# - JOIN 对象集合的多个属性的正确方法?

c# - 就像在 Lambda 表达式和 LINQ 中一样

java - 无法解析我用来初始化适配器的方法 'getActivity()'

Python dict 键按列表排序为值

c# - MVC 局部 View 呈现但不执行 Razor 代码

c# - 使用 linq 时返回匿名类型结果

android - 相同数据具有不同 expandableList 的多个 fragment

c# - 如何从我的 MVC 应用程序访问 OneDrive for Business