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;
您的代码返回所有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();