2013-01-16 22 views
0

我試着編寫一個LINQ查詢,它會給我所有的細節在一個地方,我需要生產日期,員工姓名和這個員工應該得到的錢的總和爲他的工作。這是我到目前爲止有:不支持指定的方法LINQ和MYSQL

var PrePerWorker = 
        (from Production in context.production 
        where Production.ProductionDate >= dtpStartDate.SelectedDate && Production.ProductionDate <= dtpEndDate.SelectedDate 

        select new 
        { 
         Worker = 
          (from Employee in context.employees 
          where Employee.ID == Production.EmpID 
          select Employee.FirstName).FirstOrDefault(), 
         DateOfProduction = Production.ProductionDate, 
         Total = 
          Production.Side == 1 ? Production.Amount * 
          (from Product in context.products 
          where Product.ProductID == Production.ProductID 
          select Product.SideA).FirstOrDefault(): 
          Production.Side == 2 ? Production.Amount * 
          (from Product in context.products 
          where Product.ProductID == Production.ProductID 
          select Product.SideB).FirstOrDefault(): 
          Production.Side == 3 ? Production.Amount * 
          (from Product in context.products 
          where Product.ProductID == Production.ProductID 
          select Product.SideC).FirstOrDefault(): 0 
        }).GroupBy(x => x.DateOfProduction, x => x.Worker); 

當我運行這個,然後嘗試遍歷結果我得到一個錯誤說「不支持指定的方法」。
任何人都知道爲什麼?我該如何解決這個問題?

+0

因爲你的linq不能被翻譯成mysql查詢。你在這裏的意思是「.GroupBy(x => x.DateOfProduction,x => x.Worker);」? –

+0

那我該怎麼辦?我打算由2個「列」組合 –

+1

您有效地使用GroupBy的[this overload](http://msdn.microsoft.com/zh-cn/library/bb549270.aspx),這顯然不受查詢支持供應商。當它說「指定方法」時,我希望某個方法在某處指定,是嗎? (內部例外也許?) –

回答

0

我的猜測是大專? :運算符不能轉換爲SQL

+0

那麼,我能做些什麼才能達到我的最終結果? –

0

對於2列分組,您需要GroupBy(x => new {x.DateOfProduction, x.Worker});。你能解釋一下你需要什麼,因爲你的linq看起來對我來說很難。

+0

好的,我需要在表格中顯示所有的工人名字(因此是工人表中的第一個名字選擇),生產日期以及他做了多少工作或他所在的工作站。然後,我需要總結每個工作人員每天的總數,然後將其顯示在報告中。如果現在請讓我知道,我希望我明確表示。 –

相關問題