您好我正在WPF中完成我的第一个EF和MySql项目
我有一个名为Staff的实体,它是MySql数据库中的staff表,记录的一部分是" isactive"标志可以是1或0(零为左)
我在这个实体上做了一个组合,但它显示了数据库表中的所有记录,当我真正想要看到的是"活跃的"工作人员,在SQL中我只会做一个"where isactive=1"
子句
自动生成的代码是
private System.Data.Objects.ObjectQuery<HelpdeskTickets.ost_staff> Getost_staffQuery(HelpdeskTickets.ostEntitiesv2 ostEntitiesv2)
{
// Auto generated code
System.Data.Objects.ObjectQuery<HelpdeskTickets.ost_staff> ost_staffQuery = ostEntitiesv2.ost_staff;
// Returns an ObjectQuery.
return ost_staffQuery;
}
我试过return ost_staffQuery.Where("isactive=1");
但是这没有返回结果我觉得我应该有一个对象来过滤或使用LINQ
有人能指出我正确的方向吗?
答案 0 :(得分:0)
Linq中的Where()方法与lambda一起使用,如下所示:
return ost_staffQuery.Where(staff => staff.isactive);
或者
return ost_staffQuery.Where(staff => staff.isactive == true);
你说当isactive为0时它是Left,但我不确定这意味着什么。通常,实体框架将使用位(0/1)类型作为布尔值。
有没有理由不能从您的上下文查询?类似的东西:
myStaffContext.StaffMembers.Where(staff => staff.isactive).ToList();
请注意Where()方法实际上不会返回对象。它返回一个IQueryable。要实际执行查询,您应该执行ToList或其他返回单个(First()或FirstOrDefault())或IEnumerable类型的方法。
如果要返回数值,例如
.Where(staff => staff.isactive == 1);