1

実際、私は学生のリストを都市ごとにグループ化しようとしています。これを実行すると、s2.Cityの近くのLINQステートメントで「オブジェクト参照」エラーが発生します。

class Groupby
    {
        Student[] s = new Student[10];

        public Groupby()
        {
            s[0] = new Student("Manikandan", "Jayagopi", "Chennai");

            s[1] = new Student("Ganesh", "Bayyanna", "Bangalore");

            s[2] = new Student("Laxman", "Bharghav", "Hyderabad");

            s[3] = new Student("Dinesh","Vellaiyan","Pune");

            s[4] = new Student("Natarajan","Nallathambi","Chennai");
        }

        public void Group()
        {                
            var groupQuery = from s2 in s
                             group s2 by s2.City;

            foreach (Student s1 in groupQuery)
                Console.WriteLine(" {0}", s1.FirstName);

        }
    }

class Program
    {
static void Main()
        {            
            Groupby objGroupby = new Groupby();

            objGroupby.Group();

            Console.ReadLine();
        }
    }

誰かが私を助けることができますか?

前もって感謝します

4

3 に答える 3

5

10個のアイテムの配列があり、5個しか初期化されていません。他の5個はnull、配列の長さが固定されているためです。これは、s2.Cityが発生することを意味しNullReferenceExceptionます。したがって、次のいずれかです。

  • アレイのサイズを大きくしないでください。

    Student[] s = new Student[5];
    
  • List<T>配列の代わりに使用します。

    List<Student> s = new List<Student>();
    ///
    s.Add(new Student { ... }); // etc
    
  • 確認してくださいnull

    var groupQuery = from s2 in s
                     where s2 != null
                     group s2 by s2.City;
    
于 2012-08-09T10:18:43.273 に答える
1

サイズ10の配列を作成し、配列を5つのオブジェクトで埋めるだけなので、5から9までの指標はNULL参照です。後で、オブジェクトのプロパティでグループ化します。これは、NULL参照のプロパティを読み取ろうとしているため、問題が発生する場所です。

于 2012-08-09T10:21:01.627 に答える
0
public void Group()
    {
        var groupQuery = from s2 in s
                         where s2 != null
                         group s2 by s2.City;

        foreach (var s1 in groupQuery)
        {
            Console.WriteLine("Group: {0}", s1.Key);
            foreach(var s in s1)
            {
                Console.WriteLine("Student: {0}", s.FirstName);
            }
        }

    }

そのグループの生徒にアクセスする前に、グループをループする必要があります。

お役に立てば幸いです。

于 2012-08-09T10:30:07.107 に答える