LINQ正在获取项目<;t>;来自集合

本文关键字:gt 集合 lt 获取 项目 LINQ | 更新日期: 2023-09-27 17:59:37

我需要从某个LINQ接收一个类型,该类型在运行时被分配给一个var,显然,我可以自己将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;

LINQ正在获取项目<;t>;来自集合

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

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

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

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

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

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

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

这将为您提供第一个找到的人,如果没有找到人,则为null

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

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

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

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();