下面是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