gpt4 book ai didi

c# - Linq to sql,在动态where子句中使用like

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:46 29 4
gpt4 key购买 nike

我需要在动态 WHERE 子句中使用 LIKE 运算符。

我目前正在使用 = 运算符,但需要替换为 LIKE :

String whereClause = "1 = 1 AND ";
whereClause = whereClause + (search.Id != null ? "Id = " + search.Id + " AND " : "");
whereClause = whereClause + (search.FirstName != null ? "FirstName = \"" + search.FirstName + "\" AND " : "");
whereClause = whereClause + (search.LastName != null ? "LastName = \"" + search.LastName + "\" AND " : "");
whereClause = whereClause + (search.StudentName != null ? "StudentName = \"" + search.StudentName + "\" AND " : "");
whereClause = whereClause + (search.Country != null ? "CountryLabel = \"" + search.Country + "\" AND " : "");
whereClause = whereClause + (search.ZipCode != null ? "ZipCode = \"" + search.ZipCode + "\" AND " : "");
whereClause = whereClause + (search.City != null ? "City = \"" + search.City + "\" AND " : "");
whereClause = whereClause.Remove(whereClause.Length - 5);

IEnumerable<MyClassDto> res = (
from ...
where ...
select new MyClassDto() {
...
}
).Where(whereClause);
  1. 我不能使用 Contains()StartsWith()EndsWith(),因为搜索参数可以采用“%my%值”。
  2. 我无法在动态 WHERE 子句中使用 SqlMethods.Like()
  3. 我不想将它包含在 MyClassDto 查询的 WHERE 子句中,因为它会减慢执行时间,这就是我应用另一个 的原因Enumerable 上的 WHERE 子句,仅匹配搜索参数。

有什么建议吗?

最佳答案

我会使用 PredicateBuilder。

请看这里:http://www.albahari.com/nutshell/predicatebuilder.aspx

关于c# - Linq to sql,在动态where子句中使用like,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19952282/

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