【发布时间】:2018-06-22 06:56:20
【问题描述】:
我正在做一些初步工作,以便从 MVC 中的 webAPI 控制器中准备好数据消费。我正在使用一个 linq 查询,它模仿一个使用两个连接的联合查询。但是,我需要 select 语句在联合的每一侧要求不同的字段。当我运行查询时,这在 SSMS 中运行良好,但是当我在 linq 中创建查询时,它不允许字段不同。它给出了一个错误,指出每个匿名类型都需要一个相同类型的接收者。这是指通过 select new { } 创建的两个匿名类型...这是两个查询。
在 SQL 中:
Select m.Last_Name, first_name, m.dc_number, Dept_Job as JobOrStatus FROM
Master_Roster m
INNER JOIN Class_Assignment a on m.dc_number = a.dc_number
where a.subject_am = 'y1'
AND Start_Date_AM <= '1/31/18'
UNION ALL
Select m.Last_Name, first_name, m.dc_number, status_am FROM Master_Roster m
INNER JOIN Attend_am_y1 at on m.dc_number = at.dc_number
where at.class_date_am >= '1/1/18'
AND at.class_date_am <= '1/31/18'
ORDER BY Last_Name
在 linq 中:
(from m in db.Master_Roster
join c in db.Class_Assignment
on m.dc_number equals c.dc_number
orderby m.Last_Name
where c.Subject_AM == "y1"
select new { m.dc_number, m.Last_Name, m.First_Name }).Concat(
from m in db.Master_Roster
join a in db.attend_am_y1 on m.dc_number equals a.dc_number
orderby m.Last_Name
where a.class_date_am >= date1 &&
a.class_date_am <= date2
select new { m.dc_number, m.Last_Name, m.First_Name });
如果我将 dept_job 和 status_am 添加到 linq 查询,则会引发上述错误。我想在不使用存储过程的情况下做到这一点。有什么想法吗?
【问题讨论】:
标签: linq linq-to-sql linq-to-entities