通过查询将sql组转换为linq

时间:2014-01-17 10:03:40

标签: sql linq entity-framework-4

请帮助将sql查询转换为linq,

select top(1) AgentID 
from Leads l 
inner join LeadDetails ld on l.LeadID = ld.LeadID 
where ld.PropertyShown = 0 
group by AgentID 
order by COUNT(AgentID)

有转换工具吗?

1 个答案:

答案 0 :(得分:0)

LINQPad将从LINQ转换为SQL,但不是其他方式。

这个问题linqpad-convert-sql-to-linq也询问如何从SQL转换为LINQ语法。

以下是我手动完成的方法;我把它输入LINQPad进行测试 -

// Test data
    var Leads = new []{new {LeadID=1,AgentID="John"},new {LeadID=2,AgentID="Jane"}};
    var LeadDetails = new []{new {LeadDetailId=1,LeadID=1,PropertyShown=0},new {LeadDetailId=2,LeadID=1,PropertyShown=0},new {LeadDetailId=2,LeadID=2,PropertyShown=0}};

var topAgentId =
(from l in Leads
join ld in LeadDetails on l.LeadID equals ld.LeadID
where ld.PropertyShown == 0
group l by l.AgentID into agentGroup
orderby agentGroup.Count() ascending // or descending if you want the agent with the most leads
select agentGroup.Key).FirstOrDefault();

topAgentId.Dump();