2014-04-14 87 views
0

我無法將以下查詢從c#轉換爲vb。我不能得到正確的語法 ,我很好,但與LINQ不好。任何幫助讚賞。將c#lambda表達式LINQ轉換爲vb.net

var result = (From d In projectionEntities.projections 
      Where d.SymbolId <= 42 
      Join t In projectionEntities.symbols On d.SymbolId Equals t.Id     
      Group d by d.SymbolId into g 
      select new { 
        SymbolId = g.Key, 
         ProjectionPerformances = 
            g.Select(gg=>new ProjectionPerformance{ 
               SymbolId = gg.SymbolId, 
               Name = gg.Symbol.Name, 
               rpDate = gg.Date.ToString(), 
               ActualRange = gg.HighProjection - gg.LowProjection 
               }) 
        .ToDictionary(g=>g.SymbolId); 
+0

請發表您的VB.Net LINQ的代碼。也許這只是一小故障 –

+1

未來,請不要將語言混合在相同的代碼片段中(您的代碼是C#和VB的混合) - 它只是增加了更多工作來解決問題。 –

回答

2

我的做法是從有效的C#開始,並使用工具進行翻譯。然後從生成的結果,我需要做一些調整。

這是一個有效的C#代碼片段你類似的,具有輕微的改變。一個網站的

var projections = new[] 
{ 
    new { SymbolId = 1, Name = "", Date = DateTime.Now }, 
    new { SymbolId = 2, Name = "", Date = DateTime.Now } 
}; 
var symbols = new[] { new { Id = 1 }, new { Id = 2 } }; 

var result = 
(from p in projections 
      where p.SymbolId <= 42 
      join s in symbols on p.SymbolId equals s.Id 
      group p by p.SymbolId into g 
      select new 
      { 
       SymbolId = g.Key, 
       ProjectionPerformances = 
          g.Select(gg => new 
          { 
           SymbolId = gg.SymbolId, 
           Name = gg.Name, 
           rpDate = gg.Date.ToString(), 
          } 
             ) 
      }).ToDictionary(g => g.SymbolId); 

例子轉換C#來VB.net - http://www.developerfusion.com/tools/convert/csharp-to-vb

這是生成的結果

Dim projections = New() {New With { _ 
    Key .SymbolId = 1, _ 
    Key .Name = "", _ 
    Key .[Date] = DateTime.Now _ 
}, New With { _ 
    Key .SymbolId = 2, _ 
    Key .Name = "", _ 
    Key .[Date] = DateTime.Now _ 
}} 
Dim symbols = New() {New With { _ 
    Key .Id = 1 _ 
}, New With { _ 
    Key .Id = 2 _ 
}} 

Dim result = (From g In From p In projections 
Where p.SymbolId <= 42Join s 
In symbols On p.SymbolId = s.IdGroup p By p.SymbolIdNew With { _ 
    Key .SymbolId = g.Key, _ 
    Key .ProjectionPerformances = g.[Select](Function(gg) New With { _ 
     Key .SymbolId = gg.SymbolId, _ 
     Key .Name = gg.Name, _ 
     Key .rpDate = gg.[Date].ToString() _ 
    }) _ 
}).ToDictionary(Function(g) g.SymbolId)