2014-09-25 258 views
-1

我是使用C#编程的新手。我试图建立一个彩票程序(WinForm),它接受玩家的号码,并且名字&将它们放入ArrayList中。我遇到的麻烦是将彩票号码数组与ArrayList中每个玩家的数组进行比较。例如:将数组与ArrayList中的另一个数组进行比较

public class Player 
{ 
    public String name; 
    public Int32[] playerNbrs = new Int32[6]; 
} 

public class Data 
{ 
    public static ArrayList arrayPlayers = new ArrayList(); 

    public static int[] lotteryNbrs = new int[6]; 
} 

我知道我应该使用SequenceEqual,但我无法提取ArrayList中每个玩家的阵列,并将其与int[] lotteryNbrs

任何意见是赞赏!

+1

为什么首先使用'ArrayList'?用泛型类型编写代码更好(比如'List '),并且避免了投射(以及在值类型的情况下,装箱)。由于通用集合将实现通用'IEnumerable ',因此Linq将很容易应用。 – 2014-09-25 10:06:08

+0

如果玩家的号码与提取的号码不一致,玩家还会赢吗?我的意思是'Player1 = 1,2,3,4,5,6 LotteryNumbers = 6,5,4,3,2,1' Player1获胜? – Steve 2014-09-25 10:20:25

回答

1

可以使用OfType方法是这样做的:

// if theWinner is null it means there is no winner 
var theWinner = arrayPlayers 
     .OfType<Player>() 
     .FirstOrDefault(x => x.playerNbrs.SequenceEqual(lotteryNbrs)); 

顺便说一句,千万不要使用ArrayList。使用强类型集合List<Player>,而不是...

编辑:在那里有一个以上的获奖者的情况:

var theWinners = arrayPlayers 
     .OfType<Player>() 
     .Where(x => x.playerNbrs.SequenceEqual(lotteryNbrs)); 
+0

我太挑剔了,我知道,但胜者可能超过一个:-) – Steve 2014-09-25 10:09:13

+0

@Steve补充说,也是 – 2014-09-25 10:13:39

+0

@ Selman22:谢谢你。这正是我所期待的!感谢您的建议。我想我的老师并不在意列举ArrayList的好处。我会记住这一点 ! – sWo 2014-09-25 10:41:06

相关问题