我如何使用我的枚举在LinqToSQL查询?(How do I use my enumeration

2019-06-23 11:43发布

我在我的数据库表中的字段用来存储枚举值,例如:

create table MyTable (
  ...
  Status tinyint not null,
  ...
)

在我的C#类我有

public enum TStatus : byte {
  Pending = 1      
  Active = 2,
  Inactive = 3,
}

public TStatus MyStatus {
  get { return (TStatus)Status; }
  set { Status = (byte)value; }
}

现在我要编写使用LINQ查询MyStatus财产MyTable

var q = MyDataContext.GetTable<MyTable>().Where(t => t.MyStatus == TStatus.Active);

但当然,LINQ的不知道如何解释MyStatus为SQL。 我需要做什么做MyStatus ,以便它在LinqToSQL工作?

Answer 1:

看看这个链接:

http://dotnet.org.za/hiltong/archive/2008/08/06/using-enums-with-linq-to-sql.aspx

作为链接死 - 对我来说,至少这一次真的死了 - 这里是重要的部分:

[当添加列到实体]默认情况下,该类型将拿出作为一个“整数(System.Int32)”,但你可以改变它的完全限定类型的枚举的(在我的情况,ConsoleApplication1.CustomerType )。 但是,为了充分找到它,你必须添加全局标识符,如下所示:全球:: ConsoleApplication1.CustomerType,使键入的是(但相当于为您的命名空间)到文本框中



Answer 2:

没有编译器方便,但我认为,如果你投你的枚举为int,它会工作。 因此,尝试:

VAR Q = MyDataContext.GetTable()式(T => t.MyStatus ==(INT)TStatus.Active)。



文章来源: How do I use my enumeration in a LinqToSQL query?