我已经弄清楚了如何使用 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/