VB.Net和C#之间LINQ语法的差异
只是出于好奇:
在VB.Net中编写了几个项目后,我惊讶地发现C#和VB.NET LINQ用法之间存在一些细微差别。 例如,如果我们想要按多个属性(列)对元素进行分组,我们需要显式创建一个新的匿名类型:
var procs = from c in Process.GetProcesses() group c by new {c.BasePriority, c.Id} into d select d;
而在VB.NET中,更直接的语法已经做到了:
Dim b = From c In Process.GetProcesses() Group c By c.BasePriority, c.Id Into Group Select Group
因此,人们不需要在这里创建一个带有“new”的类型。
还有什么区别? C#和VB.NET中的LINQ语法有什么好的比较吗?
我知道有一些差异,主要是VB.NET的LINQ有一些隐藏的gem:
- 没有明确LINQ相关,但VB.NET支持匿名类型的
Key
修饰符。 这允许您在比较匿名类型时定义匿名类型中使用的属性。 据我所知,C#; 它使用一切。 这是VB.NET具有实际优势的地方。 - VB.NET支持
Skip
操作作为关键字:Dim returnCustomers = From a In list Skip numToSkip Select a
您可以在C#中执行此操作; 但它必须通过扩展方法,没有语法糖。 - VB.NET LINQ也支持
Skip While
:From a In list Skip While someCondition Select a
Again,C#可以做到这一点; 但只能通过扩展方法。 - 和4.5:与2和3相同,除了
Take
andTake While
-
Select
关键字在VB.NET中是可选的。 如果你想选择当前的东西; 然后工作正常:Dim shortWords = From l In list Where l.Length < 10
in C#; 选择部分是必需的:var shortWords = from l in list where l.Length < 10 select l
这些是我所知道的VB.NET LINQ的附加“function”。
例如; 用C#:
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
试着看看这个:
Visual Basic vs C#LINQ语法
问候