【问题标题】:VB and IGrouping for LINQ query用于 LINQ 查询的 VB 和 IGrouping
【发布时间】:2012-05-06 22:33:58
【问题描述】:

我正在转换一个 c# LINQ 示例:

var query = from m in typeof(string).GetMethods()
            where m.IsStatic == true
            orderby m.Name
            group m by m.Name into g
            orderby g.Count()
            select new { name = g.Key, overloads = g.Count() };

在上面的 C# 中,g 是一个 IGrouping,但在下面的 VB 中,它是一个 IEnumerable,因此 g.Key 没有解析。

Dim query = From m In GetType(String).GetMethods() _
            Where m.IsStatic = True _
            Order By m.Name _
            Group m By m.Name Into g = Group _
            Order By g.Count _
            Select name = g.Key, [overloads] = g.Count()

我如何在 VB 中做到这一点?

【问题讨论】:

    标签: c# vb.net linq


    【解决方案1】:

    我想你想要的是这样的:

    Dim query = From m In GetType(String).GetMethods() _
                            Where m.IsStatic = True _
                            Group m By m.Name Into g = Group _
                            Order By Name, g.Count _
                            Select New With {.MethodName = Name, .Overloads = g.Count()}
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢 Jeremy... 没错... ) _ 其中 m.IsStatic = True _ 按 m.Name 排序 _ 按 m.Name 将 m 分组到 g = Group _ 按 g.Count 排序 _ Select name = Name, [overloads] = g.Count() 现在我只是不'不知道为什么 VB 和 C# 在这种情况下返回两个不同的接口,因此代码的细微差别.... ???嗯....
    • 我猜这只是 C# 和 VB.NET 之间的实现差异。比较两种 sn-ps 生成的 IL 可能会很有趣,因为底层 LINQ 基础结构是相同的,我认为只是两种语言之间的 LINQ 语言实现不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多