在我的ViewModel中,我有一个属性,可以为我的表单的下拉菜单创建一个枚举.
public enum Colors
{
[Description("Dark Red")]
DarkRed = 0,
[Description("Orange")]
Orange = 1,
[Description("Blue")]
Blue = 2
}
Run Code Online (Sandbox Code Playgroud)
我的助手回归:
<select id="ddlColor">
<option value="DarkRed">Dark Red</option>
<option value="Orange">Orange</option>
<option value="Blue">Blue</option>
</select>
Run Code Online (Sandbox Code Playgroud)
但是,当我在模型中调用属性时,我只获取名称而不是值,例如DarkRed而不是0.
model.Selections = InsertForm(model.Color);
Run Code Online (Sandbox Code Playgroud)
如何在我的模型引用中转换它,以便从枚举中获取值?
我有一个propertygrid,需要在propertygrid内创建一个组合框并显示int值(1到9),我发现使用enum是最简单的方法,但是enum无法显示int值,即使我尝试将其强制转换为int ,但我不知道如何返回所有值。还有其他方法吗?提前致谢。下面是我的代码。
public class StepMode
{
private TotalSteps totalSteps;
public TotalSteps totalsteps
{
get { return totalSteps; }
set { value = totalSteps; }
}
public enum TotalSteps
{
First = 1,
Second = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用FastMember转换List<T>为a Datatable.某些类包含枚举,这在将数据表作为TVP传递给存储过程时会导致问题.
public class MyObject
{
public int Id {get; set;}
public SomeEnum EnumHere {get; set;}
}
var dt = new DataTable();
using (var reader = ObjectReader.Create(myObjectsList))
{
dt.Load(reader);
}
db.Execute<ResultObject>("insert_objects", new { dt }, commandType: CommandType.StoredProcedure);
Run Code Online (Sandbox Code Playgroud)
FastMember转换列表中,但是对于枚举列具有DataType的SomeEnum.将数据表作为TVP传递时,会引发以下异常:
抛出异常:Dapper.dll中的"System.ArgumentException"
附加信息:不支持"SomeEnum"列的类型.类型是'SomeEnum'
有没有办法强制FastMember将枚举转换为int?
例如:
namespace PizzaSoftware.Data
{
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public Permission PermissionType { get; set; }
}
public enum Permission
{
Basic,
Administrator
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用Entity-Framework的CodeFirst,我该如何保存这个值?
这适用于Windows窗体,桌面应用程序.
谢谢!
可能重复:
如何在C#中将字符串转换为枚举?
枚举返回int值
我已声明一个枚举: -
public enum Car
{
SELECT = 0,
AUDI = 1,
NISSAN = 2,
HONDA = 3,
LINCOLN = 4
}
Run Code Online (Sandbox Code Playgroud)
现在我需要enum的int值匹配: -
private int GetCarType(string CarName)
{
foreach(var item in Enum.GetNames(typeof(Car))
{
if (item.ToLower().Equals(CarName.ToLower()))
//return int value of Enum of matched item; ???????
}
Run Code Online (Sandbox Code Playgroud)
预期结果: -
int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1;
Console.write(i);
Result :- 1
Run Code Online (Sandbox Code Playgroud)
我如何获得枚举的价值?更好的编码实践.
我有一个方法,如:
public void DoIt(params MyEnum[] channels)
{
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在参数中获取枚举的int值?
我试过var myInts = channels.Select(x => x.Value)但没有运气
在Visual Studio中 - 好吧,我正在使用Visual Studio 11 Beta,所以这可能是问题 - 我想我正在编写枚举.但是这虽然有效:

这不起作用:

怎么了?
我搜索并尝试过很多东西,但我并不是很开心.
在将旧项目从VB.Net转换为C#时,我发现两种语言之间的行为非常不同,如果不处理则会破坏C#中的逻辑.
考虑一个枚举如:
public enum TestEnum
{
Val1 = 1,
Val2 = 2
}
Run Code Online (Sandbox Code Playgroud)
我在VB.Net中有这个代码
// Will contain 1
txthMyHiddenField.Value = TestEnum1.Val1
Run Code Online (Sandbox Code Playgroud)
并且
// Will contain ~/Something?var=1
Dim Url As String = "~/Something?var=" & TestEnum1.Val1
Run Code Online (Sandbox Code Playgroud)
在C#中,这将有第一个案例Val1和第二个案例"〜/ Something?var = Val1"
到目前为止,我可以提出的解决方案,无需重新设计大量代码就可以到处去做类似的事情:
= myEnum.ToString("d");
// Or
= ((int)myEnum).ToString();
// Or an extension.
Run Code Online (Sandbox Code Playgroud)
我还考虑创建一个枚举"类",但后来我必须更改所有switch语句,这是一个更糟糕的解决方案.
我错过了什么吗?有更干净的方式吗?
我有以下枚举:
public enum BikeType : byte
{
Road = 0,
Mountain = 1
};
Run Code Online (Sandbox Code Playgroud)
当我尝试将它传递给我时,我检索字节的'字符串'表示,而不是数字值:
string str = string.Format("Road bike has a byte value of {0}", BikeType.Road);
"Road bike has a byte value of Road"
Run Code Online (Sandbox Code Playgroud)
我想要字节值(0).我究竟做错了什么?
谢谢
我有一个枚举:
public enum SensorType
{
Normal ='N',
Lunch ='C',
ALL
}
Run Code Online (Sandbox Code Playgroud)
在我的功能:
private void GetData(SensorType type){
var charValue = type.ToString(); // here I want to get the char value, not the string.
}
Run Code Online (Sandbox Code Playgroud)
我想得到"N",或"C"等任何线索?
谢谢
我需要命名空间范围的内容。所以我可以选择使用枚举,例如:
public enum Token
{
INFORMATIONAL,
WARNING,
ABORT,
FATAL
};
Run Code Online (Sandbox Code Playgroud)
但缺点是,例如在 WPF 中,我需要时不时地将它们转换为 int。
所以我想,为什么不呢
public static class Token
{
public const int
INFORMATIONAL = 0,
WARNING =1,
ABORT = 2,
FATAL = 3;
};
Run Code Online (Sandbox Code Playgroud)
在源代码中,它们看起来相同并且我没有转换问题。那么使用枚举的原因到底是什么?我显然错过了一些东西。枚举的原因是什么?
我被片段代码困住有一个对象,其中一个字段返回一个枚举(getter)字段是在从数据库读取后由函数设置的.例如
Enum fiscalperiond
{
Num1 = 12;
Num2 = 13;
}
Class A
{
Public Fiscalperiod
{
NumberOfFiscalPeriod {get;set;}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想这样做我该怎么做
A a = new A();
int k = a.NumberOfFiscalPeriod;
Run Code Online (Sandbox Code Playgroud) 可能重复:
枚举返回int值
我想算数"Stack","Overflow"而且"Stackoverflow".因此我使用枚举.
enum Status : int
{
Stack = 1,
Overflow = 2,
StackOverflow = 3
}
Run Code Online (Sandbox Code Playgroud)
但是当我想获得Stack的价值时,我得到了"Stack".
int status = 0;
status = Status.Stack; //I want to assign 1 to status but Status.Stack returns "Stack"
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
c# ×13
enums ×9
.net ×3
asp.net-mvc ×2
code-first ×1
dapper ×1
fastmember ×1
propertygrid ×1
wpf ×1