C# - 寻找在IEnumerable的第一个枚举和铸造串

问题描述 投票:1回答:1

我在JetBrains的骑士工作,并已跑进,保持出现一个警告。考虑这种情况:

public enum ValueEnum {
    A,B,C
}

public class Value {
    public ValueEnum ValueEnum { get; set; }
}

public class ValueWrapper {
    public IEnumerable<Value> Values { get; set; }
}

我试图获得该列表中的第一个枚举,并将其转换成字符串。此代码工作正常:

var format = string.Empty;
if (alert.Values != null && alert.Values.Count > 0)
{
    var template = alert.Values.First();
    format = nameof(template.ValueEnum);
}

但是我得到分配的任何执行路径警告没有使用的价值。将所述上面的片段为以下:

var format2 = string.Empty;
if (alert.Values != null)
{
    foreach (var template in alert.Values)
    {
        format2 = nameof(template.ValueEnum);
        break;
    }
}

产生一个局部变量“模板”只是用来捕捉它的名字。

有没有写这个(使用LINQ或诸如此类的东西)是在用C#最佳做法更清洁的方式吗?

c# linq
1个回答
2
投票

假设你真正想要的枚举的字符串值,而不是文本字符串“ValueEnum”,请尝试:

alert.Values?.FirstOrDefault()?.ValueEnum.ToString() ?? string.Empty;

(您的两个方法会工作,有你改变nameof(template.ValueEnum)template.ValueEnum.ToString(),但他们是不必要的详细)。

© www.soinside.com 2019 - 2024. All rights reserved.