首页 > 解决方案 > 如何从 SQL 表达式返回 IQueryable?

问题描述

尝试使用 C# 从我的数据库中查询时出现以下错误:

LINQ to Entities 无法识别方法“MyProject.Models.DB.Department getDepartment()”方法,并且该方法无法转换为存储表达式。

在我的控制器中,我有:

var query = db.Activities.AsQueryable();
query = query.Where(x => rs.department.Contains(x.getDepartment().id));

在我的模型中,我有以下方法返回正确DepartmentActivity. 我知道问题是我在执行查询时正在执行查询.First(),但我找不到返回IQueryable结果的方法:

public partial class Activity
{
   public Department getDepartment()
    {
        return db.Departments.SqlQuery( "" +
            "SELECT * FROM " +
                "[snt].[Departments] " +
            "INNER JOIN( " +
                "SELECT " +
                    "[Users].departments_id AS id " +
                "FROM " +
                    "[snt].[Users], " +
                    "[snt].[People], " +
                    "[snt].[EventPerson], " +
                    "[snt].[EventPersonTask], " +
                    "[snt].[Tasks], " +
                    "[snt].[Events], " +
                    "[snt].[Activities] " +
                "WHERE " +
                    "[snt].[Activities].id = {0} AND " +
                    "[snt].[Events].id = [snt].[Activities].events_id AND " +
                    "[snt].[EventPerson].events_id = [snt].[Events].id AND " +
                    "[snt].[EventPerson].people_id = [snt].[People].id AND " +
                    "[snt].[EventPersonTask].tasks_id = [snt].[Tasks].id AND " +
                    "[snt].[EventPersonTask].eventperson_id = [snt].[EventPerson].id AND " +
                    "[snt].[Tasks].name = 'owner' AND " +
                    "[snt].[Users].is_active = 1 AND " +
                    "[snt].[Users].people_id = [snt].[People].id" +
            " ) AS x " +
            "ON " +
                "x.id = [Departments].id", this.id).First();
    }
}

标签: c#sqllinq

解决方案


推荐阅读