如何在linq中的两个字段上保留外连接两个表? 我有一个sql:
select a.*, b.* from courselist as a
left outer join Summary as b
on a.subject = b.Subject and a.catalog =
b.Catalogno
where a.degree_id = 1
order by a.sequenceNo
下面是我的linq查询,但是有错误下划线"加入",在" Groupjoin"的调用中失败。我不知道如何纠正这一点。
var searchResults = (from a in db.courselist
join b in db.Summary on
new { a.subject,a.catalog } equals
new { b.Subject, b.Catalogno } into ab
where a.degree_id == 1
orderby a.degree_sequenceNo
from b in ab.DefaultIfEmpty()
select new
{
Courselist = a,
Summary = b
}
).ToList();
感谢。
答案 0 :(得分:0)
似乎您缺少引用,查询没有错误 试着用这个:
using System.Linq;
答案 1 :(得分:0)
人们开始使用LINQ时的主要问题是他们一直在思考SQL方式,他们首先设计SQL查询然后将其转换为LINQ。您需要学习如何以LINQ方式思考,并且您的LINQ查询将变得更整洁和简单。例如,在LINQ中,您不需要连接。您应该使用关联/导航属性。查看this post了解详情。
courselist
和Summary
之间应该存在关联,在这种情况下,您可以通过Summary
访问courselist
,如下所示:
var searchResults = (from a in db.courselist
where a.degree_id == 1
orderby a.degree_sequenceNo
select new {
Courselist = a,
Summary = a.Summary
}).ToList();
如果两者之间没有关系,那么你应该重新考虑你的设计。
答案 2 :(得分:0)
我又检查了你的代码, 我发现这是错的 你只需要像这样指定连接参数名称:
new { suject = a.subject, catalog = a.catalog } equals
new { suject = b.subject, catalog = b.Catalogno } into ab