我需要从运行时分配给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;
答案 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();