数据库结构示例:
部门表 -部门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/