c#-将linq查询结果转换为枚举
作者:互联网
我有类似对象的清单.此列表中的对象都有一个名为Name的属性和一个名为Mk2Result的枚举类型,但枚举类型为Mk2TestResult.
现在在for循环中,我想看看列表中是否存在当前的itterator整数作为对象的名称:
for(......
{
//
var query =
from pin in _pins
where pin.Name == i.ToString()
select pin.Mk2Result;
Mk2TestResult result = (Mk2TestResult)query;
//Do some more stuff
}
但是编译器抱怨以下消息:
Cannot convert type 'System.Collections.Generic.IEnumerable<DataModels.Mk2TestResult>' to 'DataModels.Mk2TestResult'
如何正确返回查询结果为枚举类型?
解决方法:
您的查询实际上返回一个Enum类型的集合.如果只想要一个结果,则必须使用Single,SingleOrDefault,First或FirstOrDefault扩展方法.
注意:如果您认为查询可能不返回任何结果,请使用名为OrDefault的方法.空的结果集将在调用Single或First时导致异常.
var query =
from pin in _pins
where pin.Name == i.ToString()
select pin.Mk2Result;
// If pin.Mk2Result is strongly typed, the cast is not necessary
Mk2TestResult result = query.FirstOrDefault();
标签:enums,linq-to-objects,linq,c 来源: https://codeday.me/bug/20191101/1980089.html