C#-在IEnumerable中找到第一个枚举并转换为字符串

时间:2019-02-06 17:14:49

标签: c# linq

我在JetBrains Rider中工作,遇到了不断出现的警告。考虑这种情况:

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;
    }
}

产生一个局部变量“ template”仅用于捕获其名称。

是否有一种更干净的方式(使用LINQ或诸如此类)来编写符合c#最佳实践的方法?

1 个答案:

答案 0 :(得分:2)

假设您实际上需要枚举的字符串值,而不是文字字符串“ ValueEnum”,请尝试:

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

(如果您将nameof(template.ValueEnum)更改为template.ValueEnum.ToString(),但您的两种方法都行得通,但不必要的冗长)。