c# - 有条件的 where with 或 criteria linqtosql

标签 c# asp.net linq linq-to-sql

我已经弄清楚了如何使用 linq to sql 进行条件查询,而且我还弄清楚了如何 OR where 子句。不幸的是,我无法弄清楚如何同时执行这两项操作。我可以做一个有条件的 where 子句,例如:

var ResultsFromProfiles = from AllPeeps in SearchDC.aspnet_Users
                          select AllPeeps;


if (SearchFirstNameBox.Checked)
{
    ResultsFromProfiles = ResultsFromProfiles.Where(p => p.tblUserProfile.FirstName.Contains(SearchTerm));
}

if (SearchLastNameBox.Checked)
{
    ResultsFromProfiles = ResultsFromProfiles.Where(p => p.tblUserProfile.LastName.Contains(SearchTerm));
}

这会给我任何名字和姓氏包含搜索词的个人资料。

或者我可以这样做:

var ResultsFromProfiles = from p in SearchDC.aspnet_Users
                          where p.tblUserProfile.LastName.Contains(SearchTerm) ||
                                p.tblUserProfile.FirstName.Contains(SearchTerm)
                          select p;

这会给我任何名字或姓氏包含搜索词的个人资料。

我有一堆复选框,用户可以在其中指定他们想要搜索哪些字段来搜索搜索词,所以我希望能够构建一个查询,像上面的第一个代码片段一样有条件地添加它们,但是添加它们作为 OR 所以它们像第二个片段一样工作。这样它将在指定字段中的任何位置搜索任何匹配项。

有什么建议吗?

最佳答案

是的,使用 PredicateBuilder .它允许您使用 And 或 Or 语义构建动态查询。它免费且稳定 - 我到处都在使用它。

关于c# - 有条件的 where with 或 criteria linqtosql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919065/

相关文章:

c# - 获取文件的相对路径?

c# - 使用反射和Linq Except/Intersect比较对象集合的性能较差

c# - C#中如何合并日期和时间

c# - C#/.NET 中远程 Portlet 的 Web 服务——选项?

asp.net - 在 Web 配置中添加服务器运行时标记会导致 500.19 错误

c# - Linq中基于过滤器的动态分组

c# - 当文本框为空时将空值插入数据库

C# 用户控件设计时序列化

C# 控制 HTML 元素

c# - 在我的应用程序中嵌入 SQL Server Express 2005