Ответ 1
Есть некоторые отличия, о которых я знаю, в основном, что VB.NET LINQ имеет некоторые скрытые камни:
- Не указано LINQ, но VB.NET поддерживает модификатор
Key
для анонимных типов. Это позволяет определить, какие свойства в анонимном типе используются при сравнении анонимных типов. Насколько я могу судить по С#; он использует все. Здесь VB.NET имеет фактическое преимущество. - VB.NET поддерживает операцию
Skip
как ключевое слово:Dim returnCustomers = From a In list Skip numToSkip Select a
Вы можете сделать это на С#; но это должно быть через метод расширения, нет синтаксического сахара. - VB.NET LINQ также поддерживает
Skip While
:From a In list Skip While someCondition Select a
Опять же, С# может это сделать; но только с помощью метода расширения. - и 4.5: То же, что и 2 и 3, за исключением
Take
иTake While
- Ключевое слово
Select
является необязательным в VB.NET. Если вы хотите выбрать то, что является текущим; то это отлично работает:Dim shortWords = From l In list Where l.Length < 10
в С#; требуется часть выбора:var shortWords = from l in list where l.Length < 10 select l
Это дополнительные "функции" VB.NET LINQ, о которых я знаю.
Например; с С#:
var skip10 = (from c in customers select c).Skip(10);
И в VB.NET
Dim skip10 = From c In Customers Skip 10
Вы можете увидеть документацию по всем этим здесь: http://msdn.microsoft.com/en-us/library/ksh7h19t(v=VS.90).aspx