Linq不在VB.Net中
发布时间:2020-12-17 00:27:24 所属栏目:大数据 来源:网络整理
导读:为了教育目的,我尝试将以下 Linq表达式从“ Linq in action”转换成VB.net 原始C# var list = from book in SampleData.Books group book by new { book.Publisher.Name,book.Subject } into grouping select new { Publisher = grouping.Key.Publisher,Subj
为了教育目的,我尝试将以下
Linq表达式从“
Linq in action”转换成VB.net
原始C# var list = from book in SampleData.Books group book by new { book.Publisher.Name,book.Subject } into grouping select new { Publisher = grouping.Key.Publisher,Subject = grouping.Key.Subject,Book = grouping }; 我的尝试: Dim list = _books.GroupBy(Function(book) New With {.Publisher = book.Publisher.Name,book.Subject}). Select(Function(grouping) New With {.Publisher = grouping.Key.Publisher,.Subject = grouping.Key.Subject,.Books = grouping}) For Each item In list Console.WriteLine("Publisher:" & item.Publisher & ",Subject:" & item.Subject) For Each Book In item.Books Console.WriteLine(" " & Book.Title) Next Next 这将导致以下输出: Publisher:FunBooks,Subject:Fun Funny Stories Publisher:Joe Publishing,Subject:Work LINQ rules Publisher:Joe Publishing,Subject:Work C# on rails Publisher:Joe Publishing,Subject:Fun All your base are belong to us Publisher:FunBooks,Subject:Fun Bonjour mon Amour 我预计,“LINQ规则”和“C#在轨道”上的书籍都被分组,以及书籍“滑稽故事”和“Bonjour mon Amour”,因为它们具有相同的发行者和主题. 我已经尝试搜索SO,但other(or)的答案不解决我的问题.即使像telerik或carlosag这样的代码转换器在这种情况下也没有帮助.
这就是问题:
GroupBy(Function(book) New With {.Publisher = book.Publisher.Name,book.Subject}) 这不等同于C#版本,因为不幸的是VB默认使用匿名类型的可变属性,并且可变属性不被视为散列代码或等式操作的一部分.您需要使两个属性“Key”属性: GroupBy(Function(book) New With {Key .Publisher = book.Publisher.Name,Key book.Subject}) 那么它应该工作正常您可以在VB on MSDN中阅读有关匿名类型的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |