将枚举与数据库返回的整数值进行比较的最简单方法是什么

2024-02-11

我正在使用 LINQ 2 SQL 从表中提取一些数据...其中一条数据是表示我的应用程序代码中的枚举的值。

比较 LINQ 对象中返回的数据和应用程序代码中的枚举的最简单方法是什么。例如

enum SomeEnum
{
  First
  Second
}

然后在我的方法中

Table<LinqObject> objects = dc.GetTable<LinqObject>();

foreach (var item in objects)
{
   // What's the simplest way to do this comparison???
   if (item.SomeNullableInteger == SomeEnum.First) // Note I realise this doesn't work!!!
   {
      // Do something...
   }
}

我可以做到这一点

SomeEnum.First.Equals(item.SomeNullableInteger)

或者我可以将枚举名称存储在数据库中,然后我就可以执行此操作

Enum.GetName(SomeEnum, SomeEnum.First) == item.SomeNullableName

有没有更好的办法?枚举只有两个项目,而且它们非常固定......可能有第三个或第四个,但可能永远不会超出这个范围。所以拥有一整张桌子似乎有点矫枉过正。

实际上这是一个重复的C# int 到 enum 的转换 https://stackoverflow.com/questions/502905/c-int-to-enum-conversion


这应该按预期工作 - 只需转换为基本类型。

item.SomeNullableInteger == (Int32)SomeEnum.First

UPDATE

最好、最干净的解决方案可能是更新您的 DBML 文件。

  1. 在设计器中打开 DBML 文件。
  2. 选择实体的枚举类型属性。
  3. 打开属性窗口。
  4. 更改字段Type所选属性的System.Int32类似的东西global::SomeNamespace.SomeEnum。也许无需global预选赛,但我不确定。

现在,如果重新生成代码,该属性将是枚举类型而不是整数。如果您有可为空的属性,那么您当然必须使用可为空的枚举类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将枚举与数据库返回的整数值进行比较的最简单方法是什么 的相关文章

随机推荐