gpt4 book ai didi

c# - 如何在具有条件多个 where 条件的 Entity Framework 中编写查询?

转载 作者:行者123 更新时间:2023-12-03 17:48:57 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Linq: adding conditions to the where clause conditionally

(9 个回答)


2年前关闭。




我正在创建一个 wcf 应用程序,它连接到数据库以使用 Entity Framework 为客户获取一些数据。这个概念是根据搜索参数搜索客户。用户可以提供所有或少数或至少一个搜索参数。但是我对 Entity Framework 很陌生,并且对如何做到这一点感到困惑。通过考虑 c# 端的 If - Else 条件,我可以在传统的 SQL 编码中做到这一点。

这是我获取所有参数的代码:

   var customers = from o in natCustomer.CustomerLists
select o;

customers = customers.Where(c => c.Name == sName && c.Age == iAge
&& c.Gender == sGender && c.Height == dHeight && c.Weight == dWeight
&& c.Nationality == sNationality
&& c.EyeColor == sEyeColor && c.SpecialMark == sSpecialMark);

请帮助我建议如何仅使用几个或一个参数来获得结果。
谢谢

最佳答案

Entity Framework 查询是“延迟”查询。在您开始询问结果之前,它们实际上不会运行。这意味着您可以分段构建查询,并且它(大部分)会像一个更大的查询一样工作。

在您的情况下,您可以执行以下操作:

var customers = from o in natCustomer.CustomerLists
select o;

if (!string.isNullOrEmpty(sName))
customers = customers.Where(c => c.Name == sName);

if (!string.isNullOrEmpty(sNationality))
customers = customers.Where(c => c.sNationality == sNationality);

if (!string.isNullOrEmpty(SpecialMark ))
customers = customers.Where(c => c.SpecialMark == SpecialMark);

等等。最后,当你执行 customers 时查询(例如,调用 ToList 或使用 foreach 循环)EF 将合并所有较小的 Where子句转换为单个 SQL 查询以针对您的数据运行。

关于c# - 如何在具有条件多个 where 条件的 Entity Framework 中编写查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32412380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com