c# - Entity Framework 中的多个 where 语句

标签 c# mysql entity-framework

数据库结构示例:

部门表 -部门ID

设施表 -设施ID -部门ID (FK) -堵塞 -等级 -姓名 -等等

我尝试使用两个 where 子句从 EF 的数据库中进行选择。我不确定 where 子句出了什么问题。我被困住了。请帮忙和建议。我在互联网上搜索过,但找不到解决方案。

        string departmentID = "SIT";
        string block = "L";
        string level = "4";
        string name = "L.425";

        using (var db = new KioskContext())
        {
            var facilitys = from f in db.Facilitys

Where 子句用于选择 DepartmentID,其中等于 SIT,并且任何 block 、级别或名称包含任何字母。请建议我应该如何编写带有两个 where 子句的语句。谢谢!

                            where f.Department.DepartmentID == departmentID
                            && (f.Block.Contains("%" + block + "%") || f.Level.Contains("%" + level + "%")
                            || f.Name.Contains("%" + name + "%"))

用于选择所有设施的查询语句的其余部分

                            orderby f.FacilityID
                            select new
                            {
                                f.FacilityID,
                                f.DepartmentID,
                                f.Description,
                                f.Block,
                                f.Level,
                                f.Name,
                                f.OpenHours,
                                f.CloseHours,
                                f.MaxBkTime,
                                f.MaxBkUnits,
                                f.MinBkTime,
                                f.MinBkUnits
                            };
            foreach (var fac in facilitys)
            {
                FacObject facobject = new FacObject(fac.FacilityID, fac.DepartmentID, fac.Description, fac.Block, fac.Level,
                    fac.Name, fac.OpenHours, fac.CloseHours, fac.MaxBkTime, fac.MaxBkUnits, fac.MinBkTime, fac.MinBkUnits);
                sqlFacList.Add(facobject);
            }
        }

最佳答案

从各个 Contains 子句中删除“%”,它们是您不需要的 SQL 垃圾。

where f.Department.DepartmentID == departmentID
     && (f.Block.Contains(block) 
     || f.Level.Contains(level)
     || f.Name.Contains(name ))

记住 LINQ 不仅仅适用于 SQL!

关于c# - Entity Framework 中的多个 where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856615/

相关文章:

c# - 查找方法的执行时间

c# - WPF 数据绑定(bind)以启用基于多个条件的控制

c# - 如何在C#中获取GPU信息?

php - 没有错误,但我在数据库中看不到我的数据

entity-framework - 代码优先 - 当我没有将父对象设置为 EntityState.Modified 时,如何保存 ICollection?

c# - ToList() 上的 "Sequence contains no matching element"

重写方法的 C# 可选参数

php - 将数据库的输出更改为可读输出

MySQL - 单元格中的数组

c# - 找不到 'ModelBuilder' 的类型或命名空间(是否缺少 using 指令或程序集引用?)