c# - 使用 LINQ 过滤必要的数据

标签 c# linq

一直在玩 linq,但有一件事我似乎无法做到。情况是这样的。假设你有。

public class Job
{
    public DateTime? CreatedDate { get; set; }
}

public class Company
{
    public string Name { get; set; }
    public List<Job> Contract { get; set; }
}

现在我想做的是填充一个公司列表,然后只获得契约(Contract)创建于...让我们说 1 月.. 类似这样的公司..

String[] MonthName = { "January", "February", "March", "April", "May", "June", "July", "Agust", "September", "October", "November", "December" };

List<Company> Companies = PopulateData();
List<Company> ValidCompany = Companies.Where(CompanyFilter => CompanyFilter.Contract.Any(ContractFilter => MonthName[ContractFilter.CreatedDate.Value.Month - 1] == "January")).ToList();

这工作正常,但它返回所有契约(Contract),甚至一些不在“一月”的契约(Contract)。我错过了一步吗?

最佳答案

您的查询中没有任何内容可以过滤契约(Contract) (Company.Contract) - 只有公司本身。您需要单独执行此操作,也许通过 .Contract 上的 Where

如果您从 LINQ-to-SQL 加载数据,则 AssociateWith可能有用。

如果您想要范围内的所有契约(Contract)而不管公司,那么也许 SelectMany:

var qry = from company in Companies
          from contract in company.Companies
          where contract.CreatedDate.Value.Month == ... etc
          select new {Company = company, Contract = contract};

关于c# - 使用 LINQ 过滤必要的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/755129/

相关文章:

c# - 无法正确组合查询

c# - 如何在表单上实现闪烁标签

c# - 如何构建正则表达式以匹配由空格分隔的固定字符串?

c# - 多个执行调用

c# - 如果异常未在 Try Catch C# 中捕获,则显示另一条消息

c# - 如何从 header 和详细信息类创建 Json

c# - 将文件内容从 php curl(使用 post)发送到 c# webapi

c# - Linq 将两个类合并为第三个类?

c# - 如何过滤字典以包含具有唯一值的项目?

c# - 提取括号中的单词,清晰且随机