2010-08-09 58 views
3

我有以下表結構。我想選擇不同的CustomerIdCustomerName,TotalCostLINQ to SQL用不同的行分組多個列

這是表格結構和列數據類型。

LogId (int) 
CustomerId (string) 
CustomerName (string) 
Cost (int) 

LOGID /客戶ID /客戶名稱/成本

  • 1 2031約翰管家20
  • 2 2035瑪麗喬10
  • 3 2034羅伯特塔克30
  • 4 2031 John Setward 12
  • 5 2036 Luke Davi d 15
  • 6 2033凱文勒14
  • 7 2035瑪麗喬9
  • 8 2036盧克大衛8
  • 9 2035瑪麗喬18
  • 10 2037傑西湯姆25
  • 11 2032安東尼詹姆斯27
  • 12 2033凱文勒26

更新1

這裏是我試圖查詢至今:

Dim db As New DemoDataContext() 

    Dim query = From log In db.LogRecords _ 
       Where log.Cost> 10 _ 
       Group log By New With {log.CustomerId, log.CustomerName} Into g() _ 
       Select New With {g.CustomerId, g.CustomerName, .Cost = g.Sum(Function(log) log.Cost)} 

但它使錯誤消息範圍變量名稱只能由不帶參數的簡單或合格的名稱來推斷。

更新2

Dim queryResult = (From log In db.LogRecords _ 
    Group log By log.CustomerId, log.CustomerName Into Cost = Sum(log => log.Cost) _ 
    Select New With { CustomerId, CustomerName, TotalCost }) 

For Each q In queryResult 

Next 

錯誤:名稱 'QueryResult中' 未聲明。

+0

好的..所以你想選擇CustomerId,CustomerName和TotalCost或LogId,CoustomerId和TotalCost? – 2010-08-09 06:01:07

+0

我想選擇CustimerId,CustomerName及其總成本。 – Narazana 2010-08-09 06:03:01

回答

4

如果我正確理解您的需求,這樣的事情應該在C#中的工作:

var query = from row in dataTable 
      group row by new { row.CustomerId, row.CustomerName } into g 
      select new 
      { 
       g.Key.CustomerId, 
       g.Key.CustomerName, 
       Cost = g.Sum(row => row.Cost) 
      }; 

[編輯]

我想我爲什麼沒有工作錯了最初的想法。我們的語法錯誤。

Dim query = From log In db.LogRecords      _ 
      Group log By log.CustomerId, log.CustomerName _ 
       Into Cost = Sum(log => log.Cost)   _ 
      Select CustomerId, CustomerName, Cost 
+0

請參閱我的更新2。 – Narazana 2010-08-09 07:30:21

+0

對不起,這是我對VB的熟悉程度結束的地方。我不知道在VB中LINQ查詢的正確語法是什麼,在任何地方都找不到任何相關的例子。在我能找到的所有例子中,有很多不同的風格。 – 2010-08-09 07:47:25

+0

謝謝Jeff,我認爲Bayonian給出了正確的語法。 :D – Narazana 2010-08-09 07:51:27

3

只是一個觀察。根據Jeff M在問題中所寫和更新的內容。

Dim queryResult = (From log In db.LogRecords_ 
      Where log.Cost > 10 _ 
      Group log By log.CustomerId, log.CustomerName Into Cost = Sum(log.Cost) _ 
      Select New With {CustomerId, CustomerName, Cost}) 
+0

啊謝謝,看起來我的測試代碼也在工作。等等,我現在看到它,不同的字段名稱。 – 2010-08-09 07:56:28

+0

我已經改正了。 – Narazana 2010-08-09 08:04:34