2009-06-17 65 views
2

我在我的數據庫表中的字段,用來存儲枚舉值,例如:如何使用我的枚舉在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; } 
} 

現在我想寫一個LINQ查詢使用MyTable如的MyStatus財產

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

當然的,但是,LINQ的不知道如何解釋MyStatus爲SQL。 我需要做什麼做MyStatus,以便它在LinqToSQL工作?

回答

7

退房此鏈接:

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

爲鏈接死 - 對我來說,至少這一次真的死了 - 這裏是重要的部分:

[當添加列實體]默認情況下,該類型將拿出作爲一個「整數(System.Int32)」,但你可以改變它的完全限定類型的枚舉的(在我的情況,ConsoleApplication1.CustomerType)。但是,爲了完全找到它,您必須添加全局標識符,如下所示:global :: ConsoleApplication1.CustomerType,因此按原樣鍵入(但與您的名稱空間等效)到文本框中

+1

+1 - 擊敗我的想法 – 2009-06-17 15:42:04

0

Don沒有一個編譯器方便,但我認爲如果你把你的枚舉轉換爲int,它就可以工作。 因此,請嘗試:

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