LINQ从集合中获取项目<t> </t>

时间:2014-04-23 08:16:02

标签: c# linq observablecollection

我需要从运行时分配给var的某个LINQ接收一个类型,显然,我可以自己将var转换为我的类型,但我相信LINQ是错的,(可能缺少Select?)任何人都能指出我正确的方向吗?感谢

-----代码------

   // there is only one active flag which is true in the collection...
    var selected = m_PersonCollection.Where(t => t.Active == true)

   // Thinking this is the way it is done...
    Person person = selected as Person;

5 个答案:

答案 0 :(得分:6)

如果您想获得可以使用的单身人士,您的代码会返回Person所有Active == true的列表

var selected = m_PersonCollection.FirstOrDefault(t => t.Active == true)

或者如果只有一个活跃的人

var selected = m_PersonCollection.SingleOrDefault(t => t.Active == true)

在两种情况下selected都是单Person个对象,如果没有找到,则为null

答案 1 :(得分:5)

要从集合中获取一个项目,您可以使用FirstOrDefault

Person person = m_PersonCollection.FirstOrDefault(t => t.Active)

如果没有找到人员,这将为您找到第一个人或null

答案 2 :(得分:3)

Where将返回IEnumberable但不返回Person,使用FirstOrDefault或Single获取Person类型的对象。

var selected = m_PersonCollection.FirstOrDefault(t => t.Active == true);  
Person person = selected as Person;

答案 3 :(得分:2)

var selected = m_PersonCollection.Where(t => t.Active == true).FirstOrDefault();

答案 4 :(得分:2)

我不确定erson有什么样的数据,但不需要使用var和cast。试试这个

Person  objPerson = (from person in m_PersonCollection
                         where person.Active.Equals(true)
                          select new Person
                          {
                              // map your Person here
                              //I assume Person has name property
                                name = person.Name
                           }).FirstOrDefault();