Again,刚刚好奇:
在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有一些隐藏的宝石:
>不明确LINQ相关,但VB.NET支持匿名类型的Key修饰符.这允许您定义在比较匿名类型时使用匿名类型中的哪些属性.就我可以用C#来说它使用一切.这是VB.NET具有实际优势的地方.
> VB.NET支持跳过操作作为关键字:
Dim returnCustomers =从列表中跳过numToSkip选择一个可以在C#中执行此操作;但是必须通过扩展方法,没有语法糖.
> VB.NET LINQ还支持Skip While:From a In list跳过WhileCondition再次选择一个,C#可以做到这一点;但只能通过扩展方法.
>和4.5:与2& 3除了采取和采取
>“选择”关键字在VB.NET中是可选的.如果你想选择什么是当前的;那么工作正常:Dim shortWords = From l In list其中l.Length < 10在C#选择部分是必需的:var shortWords = from l in list其中l.Length < 10选择l
这些是我所知道的VB.NET的LINQ的额外“功能”.
例如;与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