Asp.net mvc LINQ to SQL-在两个嵌套集合之间筛选数据集
我在Visual Studio c#中有一个MVC 3项目。我有一个LINQ到SQL查询,它运行良好,并遵循stackoverflow上其他地方列出的示例: 在两个嵌套集合匹配的地方,我成功地减少了结果。这是实现此技巧的代码位(上面链接中的示例): 我已经成功地适应了这个条件,但现在我需要能够使用多个条件过滤记录。我想知道是否有人能够修改上述内容,以显示如何包含多个条件 让您了解我的目标是什么:Asp.net mvc LINQ to SQL-在两个嵌套集合之间筛选数据集,asp.net-mvc,linq,linq-to-sql,filter,Asp.net Mvc,Linq,Linq To Sql,Filter,我在Visual Studio c#中有一个MVC 3项目。我有一个LINQ到SQL查询,它运行良好,并遵循stackoverflow上其他地方列出的示例: 在两个嵌套集合匹配的地方,我成功地减少了结果。这是实现此技巧的代码位(上面链接中的示例): 我已经成功地适应了这个条件,但现在我需要能够使用多个条件过滤记录。我想知道是否有人能够修改上述内容,以显示如何包含多个条件 让您了解我的目标是什么: 一个搜索页面,您可以在其中选择任意数量的联系人 添加到搜索条件中的每个联系人可能/可能没有分配“角
提前感谢您提供的所有帮助:O)听起来您正在寻找以下帮助:
var desiredSkillIds = desiredSkills.Select(_=>_.SkillId).ToList();
var matchingContacts =
from contact in Contacts
where contact.Role == null || desiredRoles.Contains(contact.Role)
where contact.Skills.Any(cs=> desiredSkillIds.Contains(cs.SkillId))
select contact;
或使用基于方法的语法:
var matchingContacts = Contacts
.Where(contact => contact.Role == null || desiredRoles.Contains(contactRole))
.Where(contact => contact.Skills.Any(cs => desiredSkillIds.Contains(cs.SkillId)));
以下是我使用的最终代码: servicelist=servicelist。其中(
请注意,最后一个filter.Contains(“0”)是“--select role--”的值,这是一个插入下拉列表的选项。希望这对其他人有帮助!Hi,这是一个很大的帮助,谢谢!最后一个问题。下面是联系人筛选器的实际语句片段。由于我使用的是嵌套集合,所以我不得不构建语法稍微不同的集合,所以我不确定在哪里使用ut.g.servicelist.Where(d=>d.ContactSelection.Any(h=>model.ContactFilter.Select(ds=>ds.ContactRole).Contains(h.ContactRole)))中的| |子句;我尝试了各种位置,但它总是被Visual Studio标记出来。弄明白了,我将在下面发布我的答案。再次感谢您的帮助!
var matchingContacts = Contacts
.Where(contact => contact.Role == null || desiredRoles.Contains(contactRole))
.Where(contact => contact.Skills.Any(cs => desiredSkillIds.Contains(cs.SkillId)));
d => d.ContactSelection.Any(
h => model.ContactFilter.Select(ds => ds.StaffNumber).Contains(h.StaffNumber)
&&
model.ContactFilter.Select(ds => ds.ContactRole).Contains(h.ContactRole) || model.ContactFilter.Select(ds => ds.StaffNumber).Contains(h.StaffNumber) && model.ContactFilter.Select(ds => ds.ContactRole).Contains("0"))
);