gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:07:03 26 4
gpt4 key购买 nike

我正在使用 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

有没有更好的办法?枚举只有两个项目,而且它们非常固定......可能有第三个或第四个,但可能永远不会超过那个。因此,整张 table 似乎有点矫枉过正。

实际上这是 C# int to enum conversion 的副本

最佳答案

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

item.SomeNullableInteger == (Int32)SomeEnum.First

更新

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

  1. 在设计器中打开 DBML 文件。
  2. 选择实体的枚举类型属性。
  3. 打开属性窗口。
  4. 将所选属性的字段 TypeSystem.Int32 更改为类似 global::SomeNamespace.SomeEnum 的内容。也许它可以在没有 global 限定符的情况下工作,但我不确定。

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

关于c# - 将枚举与从数据库返回的整数值进行比较的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com