过滤LINQ中的相关表

问题描述

| 假设我有一个公司表,一个雇员表,并且雇员表有一个到公司表的FK列。查询公司并返回相关员工非常容易。
var companies = from c in Companies
                select c;
通过添加
where
子句来过滤这些公司非常容易。但是如何过滤上面查询中返回的员工。例如,仅包括那些Employed列为true的员工? 我想归还所有公司,只保留那些目前受雇的员工。     

解决方法

        检索受雇的公司及其雇员:
var companies = from c in Companies
                select new
                {
                    Company = c,EmployedPersons = c.Employees.Where(e => e.Employed)
                };
像这样使用:
foreach (var company in companies)
{
    Console.WriteLine(\"{0}\",company.Company);
    foreach (var employee in company.EmployedPersons)
    {
        Console.WriteLine(\"{0}\",employee);
    }
}
根据您的评论的另一种方法,您需要在其他地方对此进行过滤:
public void DisplayEmployedPersons(Company company)
{
    foreach (var employee in company.Employees.Where(e => e.Employed))
    {
        Console.WriteLine(\"{0}\",employee);
    }
}
最后,您可以修改为您的“ 5”数据对象生成的部分类:
public partial class Customer
{
    public IEnumerable<Employee> CurrentEmployees
    {
        get { return this.Employees.Where(e => e.Employed);
    } 
}
    ,        我不确定您想对员工做什么,但这是一种遍历员工的方法:
var companies = from c in Companies
                where c.Employees.Any(e => e.Employed)
                select c;

foreach (var company in companies) {
    foreach (var employee in company.Employees.Where(e => e.Employed)) {
        // your employed employees are iterated here
    }
}
    ,        使用查询语法:
var companies = from c in Companies
                from e in c.Employees
                where e.Employed
                select c;
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...