c# - 具有多个谓词的 linq findall

标签 c# linq predicates

在 C# 中,我有一个具有 name 和 surname 属性的对象,并创建了这些对象的列表,List<person> .

我想过滤此List<person>基于姓名和姓氏,但在列表中,有些人的姓氏可能为空,因此我想仅在姓名不为空时过滤姓名,仅在姓名不为空时过滤姓氏。

我无法使用 findall 来完成此操作,因为它只接受谓词

m_cPersons.FindAll(q => q.Name != null && q.Name.ToUpper().Contains(name)); 

如何添加两个谓词?

最佳答案

而不是 List<T>.FindAll(...)方法,使用 LINQ Where(Func<TSource,bool> predicate)扩展方法:

m_cPersons.Where(q => q.Name != null && q.Name.ToUpper().Contains(name));

关于c# - 具有多个谓词的 linq findall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25709003/

相关文章:

c# - 有没有办法使用 Math.Round 始终将 .5 舍入而不是向上舍入?

c# - 如何将 Linq 查询结果转换为 XML?

assertions - 检查 Alloy 中的断言时出现奇怪的行为

c# - 使用字符串列表过滤 Entity Framework

c# - 对包含字典的对象列表进行排序

c# - C# 中的谓词问题

c# - 将工作簿保存到流而不是文件中

c# - 自定义代码片段

c# - ActionFilterAttribute 中的 GetService 返回 null