2014-09-25 198 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

相關問題