0

私は次のクラスを持っています:

    public class players
    {
        public void LottoDraw(object sender, EventArgs e)
        {
            var connectionstring = "Server=C;Database=lotto;User Id=lottoadmin;Password=password;";


            using (var con = new SqlConnection(connectionstring))  // Create connection with automatic disposal
            {
                con.Open();

                // Create new DataTable
                DataTable player = new DataTable();
                {
                    // Create new DataAdapter
                    using (SqlDataAdapter a = new SqlDataAdapter("SELECT TOP 1 LOTTOID, VAL0, VAL1, VAL2, VAL3, VAL4, VAL5 FROM tblLotto ORDER BY NEWID()", con))
                    {
                        // Use DataAdapter to fill DataTable
                        a.Fill(player);
                    }
                }
            }

        }
        public int val0, val1, val2, val3, val4, val5, val6;
        public IEnumerable<int> Numbers
        {
            get
            {
                return new[] { val0, val1, val2, val3, val4, val5, val6 };
            }
        }

    }
}

いくつかのロト番号を含むランダムな行がデータベースから返されます。その後、値はコレクションに入れられます。

次に、Linq を使用して、当選番号と抽選結果を比較します。

public void LottoWinners(object sender, EventArgs e)
        {

            Dictionary<int, int> number = new Dictionary<int, int>();
            Random generator = new Random();
            while (number.Count < 1)
            {
                number[generator.Next(1, 49)] = 1;
            }

            string[] lotto = number.Keys.OrderBy(n => n).Select(s => s.ToString()).ToArray();

            var winners = players.
                Where(Lotto => Lotto.Players.Numbers.Intersect(lotto).Count() >= 3);

            //write some logic to find out who has 3 match numbers 
            //and assign there ticket to the winners table tblWinners

        }

ただし、エラーが発生します:

「Lotto.players」には「Where」の定義が含まれていません

私はすでに持っています:using System.Linq;すべてのファイルに!

4

2 に答える 2

1

クラスWhereに対して拡張メソッドを使用しようとしているようです。を実装するコレクションに対して動作します。playersWhereIEnumerable

于 2013-06-23T16:08:37.323 に答える
1

Lotto.playersWhereはクラスであり、クラスに名前が付けられた拡張メソッドがないことを正しく通知していますLotto.playersIEnumerable<int> Numbersプロパティは、しかしの使用を許可しますWhere

于 2013-06-23T16:09:01.060 に答える