比较列表中的所有项目和新列表中的 return
Compare all items from List and return in new list
我有一个对象数组
List<Card> cardsOnTheScreen = new List<Card>(5);
每张卡片都有 enum Honurs 字段,共有 14 种荣誉(Jack、Queen 等)谁能帮我找出这些元素中的哪些在屏幕上不止一次?输出应该是例如 List of cards which is two or more same kind kind of honor.
您应该使用 LINQ 在不使用循环的情况下查找或比较集合中的项目的解决方案
List<Card> cardsOnTheScreen = new List<Card>(5);
List<Card> newList = cardsOnTheScreen.Where(obj => (Object with some condition));
之后您将获得您想要的新列表
按 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
我有一个对象数组
List<Card> cardsOnTheScreen = new List<Card>(5);
每张卡片都有 enum Honurs 字段,共有 14 种荣誉(Jack、Queen 等)谁能帮我找出这些元素中的哪些在屏幕上不止一次?输出应该是例如 List of cards which is two or more same kind kind of honor.
您应该使用 LINQ 在不使用循环的情况下查找或比较集合中的项目的解决方案
List<Card> cardsOnTheScreen = new List<Card>(5);
List<Card> newList = cardsOnTheScreen.Where(obj => (Object with some condition));
之后您将获得您想要的新列表
按 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