请帮我构建一个LINQ查询
我有一个列表List<SingleEntryReportCardModel> singleEntryReportCardModel
,内部包含EmployeeList
我希望将所有与员工姓名匹配的单一条目报告作为输入。
我试过这个
singleEntryReportCardModel =
singleEntryReportCardModel
.Where(x => x.EmployeeList.Select(y => y.EmployeeName.Contains(Name)))
.ToList<SingleEntryReportCardModel>();
但是抛出了类型转换错误
这就是它的样子:
public class SingleEntryReportCardModel
{
public GoalReportCard GoalReportCard { get; set; }
public GoalTemplateModel GoalTemplate { get; set; }
public List<EmployeeInfoModel> EmployeeList { get; set; }
}
答案 0 :(得分:4)
我不确定究竟是什么问题,但以下行看起来不对:
.Where(x => x.EmployeeList.Select(y => y.EmployeeName.Contains(Name)))
Select
的结果将是IEnumerable<bool>
。我认为这甚至不是Where
的有效论据,但我可能错了。我说“我希望所有元素都包含bool
s的集合”是没有意义的。
也许你想要这个:
.Where(x => x.EmployeeList.Any(y => y.EmployeeName.Contains(Name)))
此外,一旦你开始工作,你应该可以从调用ToList
中删除泛型类型参数:
.ToList();
答案 1 :(得分:1)
查询语法的变体
var res = (from x in singleEntryReportCardModel
where x.EmployeeList.Any(y=>y.EmployeeName.Contains(Name))
select x).ToList();
答案 2 :(得分:0)
此LINQ将提取员工列表中包含至少一名包含Name
的员工的所有元素:
var result = singleEntryReportCardModel
.Where(x => x
.EmployeeList
.Any(y => y.EmployeeName.Contains(Name)) //at least one employee contains the name
)
.ToList(); //obtain the list