C# 具有select子查询的linq联接表?
像下面这样的SQL查询,我正在尝试使它成为LinQ,但它不工作SQL工作但LinQ不工作。。。我的错误在哪里C# 具有select子查询的linq联接表?,c#,sql,asp.net,sql-server,linq,C#,Sql,Asp.net,Sql Server,Linq,像下面这样的SQL查询,我正在尝试使它成为LinQ,但它不工作SQL工作但LinQ不工作。。。我的错误在哪里 select (select X from X where X.yid=Y.id and X.FormNo=4),* from Y where Y.servicetype=3 此sql查询正在运行 public IEnumerable<NBelge> BelgeleriGetir2(int servicetype, int formno) { var db =
select (select X from X where X.yid=Y.id and X.FormNo=4),*
from Y
where Y.servicetype=3
此sql查询正在运行
public IEnumerable<NBelge> BelgeleriGetir2(int servicetype, int formno)
{
var db = new SERVISBAKIMEntities();
var result = (from g in db.Y
join d in db.X
on g.id equals d.yid into ps
from d in ps.DefaultIfEmpty()
where g.servicetype == servicetype && d.FormNo == formno
select new {});
}
public IEnumerable BelgeleriGetir2(int-servicetype,int-formno)
{
var db=新的服务基础();
var结果=(从g开始,单位为db.Y
在db.X中加入d
关于g.id等于d.yid到ps
从ps.DefaultIfEmpty()中的d开始
其中g.servicetype==servicetype&&d.FormNo==FormNo
选择新的{});
}
像这样的linq代码,但它不工作?哪里是真正的方法?使用子查询,最直接的方法是:
var result = (from y in db.Y
where y.servicetype == 3
select new { y, x = (from x in db.X
where x.yid == y.id && x.FormNo == 4
select x.x).FirstOrDefault() }
).ToList();
但是我认为使用join
更具可读性。在sql中,它将如下所示:
select X.x, Y.*
from Y
join X on Y.id == X.yid
where Y.servicetype == 3
and X.FormNo == 4
使用linq:
var result = (from y in db.Y
where y.servicetype == 3
join x in db.X on y.id equals x.yid
where x.FormNo == 4
select new { y, x }).ToList();
所以您显示了一个sql查询和一个工作linq查询,但非工作linq查询在哪里?第一个代码块是工作sql查询,第二个代码块不是工作linq语句,谢谢“不工作”是什么意思?你有错误吗?怎么了?你得到了意想不到的结果吗?您得到的结果是什么?它们与您期望的结果有何不同?您不是指子查询中的
select x
吗?@NetMage-在他的原始sql中,他从表x中选择字段x:select x from x
,因此我在第一个linqYes中保持这种方式,但结果是select x.x
,notselect x
@NetMage-这个问题已经有一段时间了:)你能提醒我你的意思吗?