将字符串转换为列表类型

时间:2018-09-18 02:42:00

标签: c# wpf enums

我有一个List方法,在这里我需要将我的枚举值作为列表类型返回。 状态数据类型是枚举对象。

这是我的代码:

public List<string> Statusstring
    {
        get
        {
            foreach (Status stat in System.Enum.GetValues(typeof(Status)).Cast<Status>().ToList())
            {
                status = stat;
            }

            return new List<string> { status.ToString() };
        }

    }

这是我的枚举值:

public enum Status
{
    Enable,
    Disable
}

这是我收到的错误消息:

  

无法将类型'System.Collections.Generic.List << em> char >'隐式转换为'System.Collections.Generic.List << em> string >'

有人可以帮我吗?

7 个答案:

答案 0 :(得分:1)

如果您只需要返回列表-那么下面是#hack

                if (reader["PRODUCTION_LINE_CODE"].ToString() == "1")
                {
                    return new List<string> { Status.Enable.ToString() };
                }
                else
                {
                    return new List<string> {Status.Disable.ToString() };
                }

更新:-与OP讨论后

if (reader["PRODUCTION_LINE_CODE"].ToString() == "1")
                {
                    return new List<string> { Status.Enable.ToString(), Status.Disable.ToString() };
                }
                else
                {
                    return new List<string> {Status.Disable.ToString() };
                }

答案 1 :(得分:1)

我看到的是一个简单问题的非常复杂的解决方案。

private static List<string> StatusString() => Enum.GetNames(typeof(Status)).ToList();

但是由于Enum值在运行时不会改变,所以我会选择静态成员

您可以定义静态成员→

private static List<string> StatusString = Enum.GetNames(typeof(Status)).ToList();

答案 2 :(得分:1)

.NET中对此有一个内置的构造:

public IEnumerable<string> Statuses => Enum.GetNames(typeof(Status))

如果返回IEnumerable<string>而不是列表,则可以将其分配给数组或列表。 Enum.GetNames(...)返回为string[]

此方法的文档为here

答案 3 :(得分:0)

该属性被命名为Statustring,但是它是List<string>吗? 我猜下面的代码可能是正确的实现:

public string Statusstring
{
    get
    {
        string query;

        query = "Select PRODUCTION_LINE_CODE from productionlineconfig where ID = '" + ProductionLineConfigs.ProductionLineId + "'";

        reader = db.QueryCommand(query);
        while (reader.Read())
        {
            if (reader["PRODUCTION_LINE_CODE"].ToString() == "1")
            {
                return Status.Enable.ToString();
            }
            else
            {
                return Status.Disable.ToString();
            }
        }
}

或者,如果您必须返回List<string>,则可以尝试

public List<string> Statusstring
{
    get
    {
        string query;

        query = "Select PRODUCTION_LINE_CODE from productionlineconfig where ID = '" + ProductionLineConfigs.ProductionLineId + "'";

        reader = db.QueryCommand(query);
        while (reader.Read())
        {
            if (reader["PRODUCTION_LINE_CODE"].ToString() == "1")
            {
                return new List<string>().Add(Status.Enable.ToString());
            }
            else
            {
                return new List<string>().Add(Status.Disable.ToString());
            }
        }
}

答案 4 :(得分:0)

第一个enum列出

var enumList = Enum.GetValues(typeof(Status))
        .Cast<int>()
        .Select(x => x.ToString())
        .ToList();

然后将enumList转换为字符串列表

var stringList  = enumList.OfType<string>();
return stringList;

答案 5 :(得分:0)

这应该做。

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<string> list = System.Enum.GetValues(typeof(Status))
            .Cast<Status>()
            .Select(x => x.ToString())
            .ToList();

        list.ForEach(Console.WriteLine);
    }
}

public enum Status
{
    Enable,
    Disable
}

答案 6 :(得分:0)

如何?

Enum.GetValues(typeof(Status)).Cast<Status>() 

将返回Ienumerable。

 Enum.GetValues(typeof(Status)).Cast<Status>().ToList();