下面是SQL查询我想翻译LINQ集团通过具有where子句
SELECT dbo.Contracts.Supplier
FROM dbo.Contracts INNER JOIN dbo.Products ON dbo.Contracts.Product = dbo.Products.Product
where dbo.Products.ProductGroup='Crude'
GROUP BY dbo.Contracts.Supplier
难道我做错了什么,因为我没有得到相同的结果具有以下LINQ
var result = from c in context.Contracts
join p in context.Products on c.Product equals p.Product1
where p.Product1.Equals("Crude")
group c by c.Supplier into g
select new { supplier = g.Key };
它产生一个奇怪的声明
SELECT
1 AS [C1],
[Distinct1].[Supplier] AS [Supplier]
FROM (SELECT DISTINCT
[Extent1].[Supplier] AS [Supplier]
FROM [dbo].[Contracts] AS [Extent1]
WHERE N'Crude' = [Extent1].[Product]
) AS [Distinct1]
使用不同将工作,但得到相同的结果,LINQ应该是生成的语句,像这样(就好像它是忽略了连接):
SELECT distinct dbo.Contracts.Supplier
FROM dbo.Contracts INNER JOIN dbo.Products ON dbo.Contracts.Product = dbo.Products.Product
where dbo.Products.ProductGroup='Crude'
如果您只对'p.Product1'为'“Product1”'的产品感兴趣,为什么不在分组之前过滤掉*? – 2012-07-20 10:02:12
想知道为什么你需要在这种情况下分组。 – hazzik 2012-07-20 10:03:41
我们正在将Access应用程序转换为ASP.NET MV3网站(使用实体框架作为数据层),因此上述查询是从Access生成的,我只是翻译了那里的内容! ...或者至少现在想要尝试。 – gmang 2012-07-20 10:05:44