c# - Lambda 表达式,如何在对象内部进行搜索?

标签 c# lambda

我开始喜欢 Lambda 表达式,但我正在努力通过这堵墙:

public class CompanyWithEmployees {
    public CompanyWithEmployees() { }
    public Company CompanyInfo { get; set; }
    public List<Person> Employees { get; set; }
}

我的搜索:

List<CompanyWithEmployees> companiesWithEmployees = ws.GetCompaniesWithEmployees();
CompanyWithEmployees ces = companiesWithEmployees
        .Find(x => x.Employees
        .Find(y => y.PersonID == person.PersonID));

所以,我想获取对象“CompanyWithEmployees”,它具有我正在寻找的那个人(雇员),但我得到“无法将‘人’隐式转换为‘ bool ’)"这是正确的,但是如果我不传递 Person 对象,第一个 Find 怎么执行?

最佳答案

因为你想检查是否存在,也许试试:

ces = companiesWithEmployees
        .Find(x => x.Employees
        .Find(y => y.ParID == person.ParID) != null);

这将检查具有相同 ParID 的任何 Person;如果您指的是相同的 Person 实例(引用),那么 Contains 就足够了:

ces = companiesWithEmployees
        .Find(x => x.Employees.Contains(person));

关于c# - Lambda 表达式,如何在对象内部进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/415866/

相关文章:

c# - 服务器端的隐藏字段值

c# - Ninject 中的 .NET Core DI 作用域生命周期

c# - Assmbley Deployed in GAC 有性能优势?

Java 相当于 C# Linq 中的 Where 子句

c++ - 将捕获 lambda 作为函数指针传递

java - 如何使用一组字符串过滤映射值?

c# - 在 C# 和 XAML 中提取 Key 的内容值

c# - 单击按钮时将文本框文本设置为当前时间

c++ - 使用 lambda 和定点组合器递归访问 `std::variant`

c++ - 如何使用 std::bind 和 lambda