当前位置:  开发笔记 > 编程语言 > 正文

Lambda表达式,如何在对象内搜索?

如何解决《Lambda表达式,如何在对象内搜索?》经验,为你挑选了2个好方法。

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

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

我的搜索:

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

所以,我想获得具有我正在寻找的那个Person(Employee)的Object"CompanyWithEmployees",但我得到" 不能隐含地将'Person'转换为'bool') "这是正确的,但如果我'我没有传递Person对象,第一个Find怎么执行?



1> Marc Gravell..:

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

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

这将检查任何Person相同的ParID; 如果你的意思是相同的Person实例(参考),那么Contains就足够了:

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



2> David Schmit..:

Find()返回找到的对象.用于Any()检查表达式是否适用于任何元素.

var ces = companiesWithEmployees
    .Find(x => x.Employees
    .Any(y => y.PersonID == person.PersonID));

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有