编程语言
首页 > 编程语言> > c#-将linq查询结果转换为枚举

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