gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:17 24 4
gpt4 key购买 nike

一直在玩 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com