使用显式定义的谓词时出现 C# 错误
本文关键字:错误 谓词 定义 | 更新日期: 2023-09-27 17:55:36
我有许多 lambda 表达式将在 where 子句中使用相同的谓词。因此,我第一次使用谓词类型。这是我所拥有的..
Predicate<Type> datePredicate = o => o.Date > DateTime.Now.AddDays(-1);
当我在查询(下面)中使用它时,我收到以下错误。
错误:
The type arguments for method 'System.Linq.Enumerable.Where<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,int,bool>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
用法:
Type t = collection.Where(datePredicate).SingleOrDefault();
有谁知道我做错了什么?
试试这个:
Func<MyObject, bool> datePredicate = (o => o.Date > DateTime.Now.AddDays(-1));
collection.Where(datepredicate);
此外,当您做.SingleOrDefault()
时,不确定这将如何神奇地变成Type
,因为据我所知,您的List<T>
不是List<Type>
(因为Type
没有Date
属性)。
编译器
无法静态计算出o
参数是什么Type
。我认为o
属于DateTime
型。编译器不会做出假设:)
Predicate<DateTime> datePredicate = o => o.Date > DateTime.Now.AddDays(-1);
试试看。