2015-10-05 92 views
1

這對於c#來說等價的代碼是什麼?將Linq查詢從vb.net轉換爲c#

VB代碼

下面是什麼,我想,但它是相當錯誤的。

var q = (from p in commDs.Tables[1].AsEnumerable() 
        join e in ds.Tables[1].AsEnumerable() on 
        p.Field<int>("JobID") equals e.Field<int>("JobID") 
        && e.Field<int>("EventID") equals p.Field<int>("EventID") 
     Select new{ p,e} 
     ); 
+1

你可以試試這個工具:http://converter.telerik.com/ –

+1

試過了,但是轉換器返回EOF錯誤。 – user2058252

回答

1

我沒有意識到VB會讓你加入像這樣的多個值。在C#中相當於將創建連接密鑰的匿名類型:

var q = (from p in commDs.Tables[1].AsEnumerable() 
        join e in ds.Tables[1].AsEnumerable() 
        on new {JobID = p.Field<int>("JobID"), EventID = p.Field<int>("EventID") } 
         equals new {JobID = e.Field<int>("JobID"), EventID = e.Field<int>("EventID") } 
     select new {p,e} 
     ); 

其他唯一的區別是,所產生的匿名類型有不同的字段名(peresRoweRow)但這很容易改變。

+0

我有點困惑,試過你的代碼,但編譯器說名字'e'不在'等於'左邊的範圍。 – user2058252

+0

@ user2058252再試一次;我有兩個引用'p'和'e'翻轉(特別是在連接子句中) –

+0

酷似乎現在很好,現在相當驚訝,我現在明白我的錯誤。 – user2058252