c# - 不支持异常 : LINQ to Entities does not recognize the method

标签 c# .net entity-framework linq

<分区>

我试图让这个查询与 EF 一起工作,但它抛出了一个异常:

var c = ac.Communities.OrderBy(o => o.Posts.Count())
        .Skip(page*limit)
        .Take(limit)
        .Select(o => o.ToViewModel()).ToArray();

Community 模型中的 ToViewModel() 方法如下所示:

public CommunityModel ToViewModel()
{
    return new CommunityModel()
    {
        category = Category.Name,
        created = CreationTime,
        description = Description,
        id = Id,
        name = Name,
        ownerId = Owner.Id,
        postsCount = Posts.Count(),
        score = Posts.Sum(o => o.Likes - o.Unlikes),
        shortDescription = ShortDescription,
        subscribersCount = Subscribers.Count(),
    };
}

我做错了什么?

最佳答案

Entity Framework 无法转换您在 ToViewModel 中使用的方法。使用 ToList() 预先加载结果,然后映射这些结果,避免 EF 尝试翻译 SQL 的需要:

var c = ac.Communities.OrderBy(o => o.Posts.Count())
    .Skip(page*limit)
    .Take(limit)
    .ToList()
    .Select(o => o.ToViewModel()).ToArray();

关于c# - 不支持异常 : LINQ to Entities does not recognize the method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41434959/

相关文章:

c# - 调试时如何在内存中搜索字符串?

c# - 了解 C# 4.0 中的协变和逆变

C#:更改 Entity Framework 的检索数据类型

c# - 如何编写实体实例方法以在 Entity Framework 4.0 中持久化自身?

c# - 根据另一个列表确定一个列表的索引,反之亦然,欢迎使用 C#/VB.NET 或 JavaScript 解决方案

c# - 在另一个 URL 的查询部分中提取一个 URL

c# - 为什么 Dapper QueryAsync<T> 的行为与具有存储过程返回值的 Query<T> 不同?

java - 'automated piece of code' 在单元测试的定义中意味着什么?

.net - 如何发出具有两个仅在返回类型上重载的属性的 .NET 类型?

c# - 在 C# 中使用 Entity Framework、Mysql 和 LINQ to SQL 提交和回滚事务