如何在 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; }
}
现在想编写一个使用 MyTable 的
例如,MyStatus
属性的 Linq 查询
var q = MyDataContext.GetTable<MyTable>().Where(t => t.MyStatus == TStatus.Active);
但当然,Linq 不知道如何将 MyStatus
解释为 SQL。 我需要对 MyStatus
做什么才能使其在 LinqToSQL 中工作?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看此链接:
http://dotnet.org.za/hiltong/archive/2008/08/06/using-enums-with-linq-to-sql.aspx
由于链接消失了 - 至少对我来说这个链接消失了die - 这是重要的部分:
Check out this link:
http://dotnet.org.za/hiltong/archive/2008/08/06/using-enums-with-linq-to-sql.aspx
As links die - and at least for me this one did die - here is the important part:
手边没有编译器,但我认为如果你将枚举转换为 int,它就会起作用。
所以尝试:
var q = MyDataContext.GetTable().Where(t => t.MyStatus == (int)TStatus.Active);
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);