如何在LinqToSQL查询中使用我的枚举?

我的数据库表中有一个用于存储枚举值的字段,例如:

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; } } 

现在我想写一个使用MyTableMyStatus属性的Linq查询,例如

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

但当然,Linq不知道如何将MyStatus解释为SQL。 我需要对MyStatus做什么才能在MyStatus中工作?

看看这个链接:

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

因为链接死了 – 至少对我来说这个人死了 – 这是重要的部分:

[默认情况下,将列添加到实体时],Type将显示为“int(System.Int32)”,但您可以将其更改为枚举的完全限定类型(在我的示例中,ConsoleApplication1.CustomerType )。 但是,为了完全定位它,您必须添加全局标识符,如下所示:global :: ConsoleApplication1.CustomerType,因此在文本框中按原样键入(但名称空间等效)

没有编译器方便,但我认为如果你将你的枚举转换为int,它将工作。 所以尝试:

var q = MyDataContext.GetTable()。Where(t => t.MyStatus ==(int)TStatus.Active);