这个问题对我来说纯粹是学术性的,是我在这里回答的问题的衍生问题。
从数组列表中检索具有特定元素值的对象 https://stackoverflow.com/questions/19469945/retrieve-object-from-an-arraylist-with-a-specific-element-value/19470084#19470084
这家伙正在使用一个普通的 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 的类型。
有谁知道第二种格式中我的查询的正确格式是什么?
您可以使用Cast<T>
将其转换为强类型可枚举:
var females = personArrayList.Cast<Person>()
.Where(p => p.gender.Equals("Female"));
Cast<T>
如果您有除以下之外的任何内容,则会引发异常Person
在你的数组列表中。您可以使用OfType<T>
代替Cast<T>
只考虑那些类型的对象Person
.
另外,请使用枚举来表示性别,而不是字符串。
enum Sex { Male, Female }
class Person
{
public Sex Gender { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)