I have a field in my database table that use to store an enumeration value, e.g.:
create table MyTable (
...
Status tinyint not null,
...
)
and in my C# class I have
public enum TStatus : byte {
Pending = 1
Active = 2,
Inactive = 3,
}
public TStatus MyStatus {
get { return (TStatus)Status; }
set { Status = (byte)value; }
}
now I want to write a Linq query that uses the MyStatus property of MyTable e.g.
var q = MyDataContext.GetTable<MyTable>().Where(t => t.MyStatus == TStatus.Active);
but of course, Linq doesn't know how to interpret MyStatus as SQL.
What do I need to do to MyStatus in order for it to work in LinqToSQL?
From stackoverflow
-
Check out this link:
http://dotnet.org.za/hiltong/archive/2008/08/06/using-enums-with-linq-to-sql.aspx
John Rasch : +1 - Beats my ideaWill : Same post I've been to several times (every time I forget how to do this). Also first time I actually got to see the global qualifier at work.Shaul : Perfect answer - thanks! Even better that it comes from a South African blog! Voerspoed! -
Don't have a compiler handy, but I think if you cast your enum to an int, it will work. So try:
var q = MyDataContext.GetTable().Where(t => t.MyStatus == (int)TStatus.Active);
0 comments:
Post a Comment