嵌套查询linq到实体
你能帮我在linq中解释这个sql查询吗嵌套查询linq到实体,linq,entity-framework,Linq,Entity Framework,你能帮我在linq中解释这个sql查询吗 SELECT DATA_MAX_qh.DATA_MAX,DATA_MAX_qh.[QUOT_CODE],[QUOT_VALUE],q.QUOT_DESCR,q.QUOT_DESCR_ALIAS FROM [dbo].[QUOTATION_HISTORY] qh INNER JOIN (SELECT MAX(QUOT_DATA) DATA_MAX, QUOT_CODE FROM
SELECT DATA_MAX_qh.DATA_MAX,DATA_MAX_qh.[QUOT_CODE],[QUOT_VALUE],q.QUOT_DESCR,q.QUOT_DESCR_ALIAS
FROM [dbo].[QUOTATION_HISTORY] qh INNER JOIN
(SELECT MAX(QUOT_DATA) DATA_MAX, QUOT_CODE
FROM [dbo].[QUOTATION_HISTORY]
GROUP BY [QUOT_CODE]) DATA_MAX_qh on
DATA_MAX_qh.DATA_MAX = qh.QUOT_DATA and DATA_MAX_qh.QUOT_CODE = qh.QUOT_CODE
inner join [dbo].[AN_QUOTAZIONE] q on q.QUOT_CODE = qh.QUOT_CODE
我需要做的第一件事是在表上分组,以获得最大日期及其匹配值
然后使用此筛选表进行更完整的选择
我从这个开始
var qhmaxdatevalue = from qh in context.QUOTATION_HISTORY
where qh.QUOT_DATA < System.DateTime.Now
group qh by qh.QUOT_CODE into qhgroupedbycode
select new { Quot_Code = qhgroupedbycode.Key, Data_Max = qhgroupedbycode.Max(x => x.QUOT_DATA) };
var qhmaxdatevalue=来自context.quote\u历史中的qh
其中qh.QUOT_DATAx.Quot_Data)};
但现在我如何继续?
使用嵌套查询
你能帮我吗?也许是这样的:
var query =
context.QUOTATION_HISTORY
.GroupBy
(
x=>x.QUOT_CODE
)
.Select
(
x=>
new
{
QUOT_CODE = x.Key,
DATA_MAX = x.Max(z=>z.QUOT_DATA)
}
)
.Join
(
context.QUOTATION_HISTORY,
x=>new{DATA_MAX,QUOT_CODE},
x=>new{QUOT_DATA,QUOT_CODE},
(DATA_MAX_qh,qh)=>new
{
DATA_MAX_qh.DATA_MAX,
DATA_MAX_qh.QUOT_CODE,
qh.QUOT_VALUE
}
)
.Join
(
context.AN_QUOTAZIONE,
x=>QUOT_CODE,
x=>QUOT_CODE,
(qh,q)=>new
{
qh.DATA_MAX,
qh.QUOT_CODE,
qh.QUOT_VALUE,
q.QUOT_DESCR,
q.QUOT_DESCR_ALIAS
}
);
var result= (
from qh in db.QUOTATION_HISTORY
from DATA_MAX_qh in
(
from innerqh in db.QUOTATION_HISTORY
group innerqh by innerqh.QUOT_CODE into g
select new
{
DATA_MAX=g.Max(x => x.QUOT_DATA),
QUOT_CODE=g.Key
}
).Where(a=>a.DATA_MAX == qh.QUOT_DATA && a.QUOT_CODE == qh.QUOT_CODE)
join q in db.AN_QUOTAZIONE
on qh.QUOT_CODE equals q.QUOT_CODE
select new
{
DATA_MAX_qh.DATA_MAX,
DATA_MAX_qh.QUOT_CODE,
qh.QUOT_VALUE,
q.QUOT_DESCR,
q.QUOT_DESCR_ALIAS
}
).ToList();
其中db是linq数据上下文可能类似于:
var result= (
from qh in db.QUOTATION_HISTORY
from DATA_MAX_qh in
(
from innerqh in db.QUOTATION_HISTORY
group innerqh by innerqh.QUOT_CODE into g
select new
{
DATA_MAX=g.Max(x => x.QUOT_DATA),
QUOT_CODE=g.Key
}
).Where(a=>a.DATA_MAX == qh.QUOT_DATA && a.QUOT_CODE == qh.QUOT_CODE)
join q in db.AN_QUOTAZIONE
on qh.QUOT_CODE equals q.QUOT_CODE
select new
{
DATA_MAX_qh.DATA_MAX,
DATA_MAX_qh.QUOT_CODE,
qh.QUOT_VALUE,
q.QUOT_DESCR,
q.QUOT_DESCR_ALIAS
}
).ToList();
其中db是linq数据上下文谢谢你,如果我需要在qc上添加左连接[dbo].[u QUOTAZIONE'u CUSTOM]qc.[QUOT'u CODE]=q.QUOT'u代码,其中qc.QUOT'u代码为空谢谢你,如果我需要在qc上添加左连接[dbo].[u QUOTAZIONE'u CUSTOM]qc.[QUOT'u CODE]=q.QUOT'u代码,其中qc.QUOT'u代码为空