我有一个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 >'
有人可以帮我吗?
答案 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();