使用显式定义的谓词时出现 C# 错误

发布于 2024-11-06 13:36:39 字数 621 浏览 4 评论 0原文

我有许多 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();

有人知道我做错了什么吗?

i have a number of lambda expressions that will be using the same predicate in a where clause. As such i am using the predicate type for the first time. Here is what i have..

Predicate<Type> datePredicate = o => o.Date > DateTime.Now.AddDays(-1);

When i use it in my query (below), i am getting the following error..

Error:

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.

Usage:

Type t = collection.Where(datePredicate).SingleOrDefault();

Does anyone know what i am doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如痴如狂 2024-11-13 13:36:39

试试这个:

Func<MyObject, bool> datePredicate = (o => o.Date > DateTime.Now.AddDays(-1));

collection.Where(datepredicate);

另外,当您执行 .SingleOrDefault() 时,不确定它如何神奇地变成 Type 因为您的 List据我所知, > 不是 List (因为 Type 没有 Date 属性)。

Try this:

Func<MyObject, bool> datePredicate = (o => o.Date > DateTime.Now.AddDays(-1));

collection.Where(datepredicate);

Also when you're doing .SingleOrDefault(), not sure how that will magically turn into a Type since your List<T> is not a List<Type> as far as I know (since Type doesn't have a Date property).

迷路的信 2024-11-13 13:36:39

编译器无法静态地找出您的 o 参数的 Type 类型。我假设 oDateTime 类型。编译器不会做出假设:)

Predicate<DateTime> datePredicate = o => o.Date > DateTime.Now.AddDays(-1);

尝试一下。

The compiler cannot statically figure out what Type your o parameter is. I would presume o is of type DateTime. Compilers don't make presumptions :)

Predicate<DateTime> datePredicate = o => o.Date > DateTime.Now.AddDays(-1);

Try that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文