代替枚举[

C#枚举替代


我对C#的经验不是很多,我对此感到怀疑,因为我们知道,在编码时,我们能够以类似的方式从智能感知中选择Enum项,而不是通过枚举从智能感知中获取项的任何其他可能性。


我的要求是我不希望枚举,我在数据库表中有“国家”列。我想对每个国家/地区执行一些验证,例如:


if( db.Countries.India )

{

   //some validation

}


不负相思意
浏览 168回答 3
3回答

慕哥9229398

我不知道它是什么db,为什么不想要使用它enum(因为您可以做到这一点,请参阅下文),但这也许可以帮助您:public class Countries{    public const string India = "India";    ...}或者,如果您想要国家/地区的ID,则可以使用public class Countries{    public const int India = 42;    ...}可以通过以下方式访问这两种建议的方法:var india = Countries.India;我知道没有人问这个问题,但是由于问题表明该问题可能是XY问题,因此我建议您采用以下方法:假设您的国家/地区表如下所示:CountryID | Name------------------------------------1         | India42        | United States of America那么您可以创建一个如下所示的枚举:public enum Country{    India = 1,    [Description("United States of America")]    United States = 42}而且您不会丢失任何信息。

红颜莎娜

如果您想让智能感知向您显示集合中的数据,那不是它的工作原理。您的C#源代码无法使用数据库中的数据,因为数据库中的数据可能会更改,而您的代码仍会引用某些固定名称属性。如果您想在按下点号'。'时向intellisense显示一些可用的功能(扩展功能),则必须在文件开头包含在其中定义这些功能的名称空间,以使intellisense显示该功能。可能性。到目前为止,尤其是执行验证最有用的方法之一是使用:using System.Linq;在文件的开头然后,您可以使用像这样的东西:if (db.Countries.Any(c => c.Name == "India" ) {     // this block will execute only if at least one country is India}foreach (var country in db.Countries.Where(c => c.Name == "India")) {     // this block will execute for each element in countries that has Name equals India and attach the country to some variable so you can perform more work with it}如果您希望以某种方式拥有固定值列表(例如枚举),则一些有趣的方法是使用常量,这已在Thomas的答案中得到了证明。
打开App,查看更多内容
随时随地看视频慕课网APP