3

この質問は私にとって純粋に学術的なものであり、ここで回答した質問のスピンオフです。

特定の要素値を持つ配列リストからオブジェクトを取得する

この男はプレーンなArrayListを使用しています...私は最善の方法を知りません...人でいっぱいです

class Person
    {
        public string Name { get; set; }
        public string Gender { get; set; }

        public Person(string name, string gender)
        {
            Name = name;
            Gender = gender;
        }
    }

personArrayList = new ArrayList();

personArrayList.Add(new Person("Koen", "Male"));
personArrayList.Add(new Person("Sheafra", "Female"));

ここで、彼はすべての女性を選択したいと考えています。私はこれをこのように解決します

var females = from Person P in personArrayList where P.Gender == "Female" select P;

別の男がプロポーズ

var persons = personArrayList.AsQueryable();
var females = persons.Where(p => p.gender.Equals("Female"));

しかし、コンパイラは p の型を見つけることができないため、これはうまくいかないようです。

私のクエリの正しい形式が2番目の形式になることを誰かが知っていますか?

4

3 に答える 3

2

ArrayListは型指定されていないメンバーがあるため、メンバーを次のようにキャストする必要がありますPerson

var females = persons.OfType<Person>().Where(p => p.gender.Equals("Female"));
于 2013-10-19T20:23:06.757 に答える
1

その要素型にキャストpersonArrayListすれば完了です。

var persons = personArrayList.Cast<Person>();
于 2013-10-19T20:25:01.797 に答える