使用WPF和MySql过滤EF 6.0中的Enteties

时间:2016-02-29 22:59:17

标签: c# mysql wpf entity-framework linq

您好我正在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

做一些事情

有人能指出我正确的方向吗?

1 个答案:

答案 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);