LINQ to Entities无法识别方法'Boolean Exists(System.Predicate`1[Entities.Connection])'方法。

6
我试图创建一个满足以下两个条件之一的笔记列表: 1. 符合已创建用户的要求。 2. 或与连接相关联。
使用下面的代码会返回异常。我知道这个异常对于Linq to entitites表达式来说很常见。但我的问题是,除了Exists之外,还可以使用哪些替代方法?
“LINQ to Entities不认识'Boolean Exists(System.Predicate`1[Entities.Connection])'方法,无法将此方法转换为存储表达式。”
_context.Notes
        .Include(t => t.Connections)
        .Where(t => t.CreatedUserId == userId || t.Connections.ToList().Exists(c => c.UserId == userId))

1
你尝试过搜索你的错误吗?有很多重复的问题会给你答案。这里有一些可能会帮到你。 - Charles Mager
4
是的,这是SO上非常常见的错误信息。无论如何,错误信息很清楚,linq to entities不支持exist,你应该尝试使用Any()或Contains()。 - mfvjunior
1个回答

8

这里的问题是Entity Framework不理解你的C#代码,无法解析.Exists()。

另一种编写方式如下:

_context.Notes
    .Include(t => t.Connections)
    .Where(t => t.CreatedUserId == userId || t.Connections.Any(c => c.UserId == userId));

在这里,如果任何连接的UserId等于userId,则.Any()将返回true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接