Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq连接语句_Linq - Fatal编程技术网

Linq连接语句

Linq连接语句,linq,Linq,我试图从实体模型中的多个表中进行选择。但有两个专栏我想选择,它只是不工作。我的LINQ声明是: var searchResult = from i in _imEntities.Issues join dept in _imEntities.Departments on i.Issued_to_dept equals dept.Dept_ID where i.State == 1

我试图从实体模型中的多个表中进行选择。但有两个专栏我想选择,它只是不工作。我的LINQ声明是:

var searchResult = from i in _imEntities.Issues
                   join dept in _imEntities.Departments
                   on i.Issued_to_dept equals dept.Dept_ID
                   where i.State == 1
                   select new {
                       i.ID_No,
                       i.Issue_Date,
                       Raised_By = dept.Dept_Name
                                       .Where(i.Raised_by_Dept == dept.Dept_ID),
                       Issued_To = dept.Dept_Name
                                       .Where(i.Issued_to_dept == dept.Dept_ID),
                       Details = i.Details
                   };

列名都是正确的,但我就是无法将部门名称放入“提出者”和“发出者”字段中。是否有其他方法来执行此操作?

不清楚您想要实现什么。但您肯定试图对单个名称字符串应用where筛选器(谓词语法也不正确)。下面是一个查询,它有条件地返回由提出的
中的
部门名称
,以及向
属性发出的
部门名称:

var query = from i in _imEntities.Issues
            join dept in _imEntities.Departments
            on i.Issued_to_dept equals dept.Dept_ID
            where i.State == 1 
            select new {
                i.ID_No, 
                i.Issue_Date, 
                Raised_By = (i.Raised_by_Dept == dept.Dept_ID) ? dept.Dept_Name : null,
                Issued_To = (i.Issued_to_dept == dept.Dept_ID) ? dept.Dept_Name : null, 
                Details = i.Details
            };
试试这个:

var query = from i in _imEntities.Issues
            join dept_r in _imEntities.Departments
            on i.Issued_to_dept equals dept_r.Dept_ID
            join dept_i in _imEntities.Departments
            on i.Issued_to_dept equals dept_i.Dept_ID
            where i.State == 1 
            select new {
                i.ID_No, 
                i.Issue_Date, 
                Raised_By = dept_r.Dept_Name,
                Issued_To = dept_i.Dept_Name, 
                Details = i.Details
            };

当您说
我就是无法将部门名称输入到“提出人”和“发出人”字段中时,
,您的意思是接收到异常、错误还是为空?最初,问题表将部门ID存储在“提出人”和“发出人”下。其中,“提出人”是指提出问题并向其发布的部门,是指“向其发布问题”的部门。我真的需要一个加入部门和问题表的查询,可以在网格中显示部门名称,而不是部门id。当我说“我只是无法将部门名称放入“提出者”和“发出者”字段时,我的意思是,我无法使用linq查询来显示存储在相应字段下的每个部门id的相应部门名称……我意识到您用
linq
标记了您的问题,但是,如果您想要一个连接部门和问题表的概念表,那么视图可能比linq更适合您。所引发的错误将显示为null。i、 “由部门提出”字段是否为整数?(nullable int),这可能是原因吗?@user2030579是的,我正在选择
null
如果
由当前问题的部门提出的
不等于加入部门的
部门ID
。非常感谢!!这正是我想要的。只是dept\u r设置为i.Issued\u to,但我将其更改为i.Raised\u By(小东西,因为我理解这个查询)。你是天才。