2013-08-22 65 views
0

我需要將LINQ查詢結果設置爲double數組。 執行下一條語句後,我得到匿名類型,並且我無法將數組轉換爲double類型。我怎樣才能做到這一點? 代碼:如何在執行LINQ語句後避免匿名類型?

var rls = context.Test 
    .GroupBy(cont => new 
    { 
     wd = System.Data.Objects.SqlClient.SqlFunctions.DatePart("weekday", cont.datetime), 
     hh = System.Data.Objects.SqlClient.SqlFunctions.DatePart("hour", cont.datetime) 
    }) 
    .Select(rs => new 
     { 
      rs.Key.wd, 
      rs.Key.hh, 
      count = rs.Count() 
     }).Where(rs => rs.hh != null & rs.wd !=null).ToArray(); 

在此先感謝。

+1

你想如何將數組轉換爲雙? –

+7

那麼你想*結果是什麼?你的匿名類型有三個字段 - 你想達到什麼目的? –

+0

結果應該是沒有匿名類型的任何數組 - 雙精度或整數。 –

回答

1

問題是這樣的Select方法返回一個匿名類型和點

.Select(rs => new 
    { 
     rs.Key.wd, 
     rs.Key.hh, 
     count = rs.Count() 
    }) 

爲了返回另一個類型,你將需要另一個Select語句來創建一個新的後,這將成爲該查詢的返回類型值在管道中返回。該問題提到獲得double的回報,但尚不清楚您想要成爲double的值。如果你只是想返回說wd參數,那麼你可以做以下幾點:

.Where(rs => rs.hh != null & rs.wd !=null) 
.Select(x => x.wd) 
.ToArray(); 
+0

我需要將** wd **和** hh **的值都返回爲double。感謝您的回覆。 –

+0

對不起,這不起作用。作爲LINQ查詢的結果,我獲得_int?_值。 –