2015-10-05 3 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# эквивалент было бы создать анонимный тип для ключа Join (ы):

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} 
     ); 

Единственным отличием является то, полученный анонимный тип имеет различные имена полей (p и e против resRow, eRow), но это легко изменить.

+0

Я немного запутался, попробовал свой код, но компилятор сказал, что имя «e» не находится в области действия в левой части «equals». – user2058252

+0

@ user2058252 Повторите попытку; У меня было две ссылки на 'p' и' e' flipped (в частности, на предложение join) –

+0

Прохладный кажется прекрасным сейчас, довольно поразительно, теперь я понимаю свою ошибку некоторое время назад. – user2058252

Смежные вопросы