首页 > 解决方案 > 将 LINQ 表达式结果返回到命名/强类型变量

问题描述

我需要将 Linq 函数的结果传递给类型的强类型变量ZipTwoBusinessObject,以便稍后使用该对象的其他组件可以知道期望什么样的数据。

在我的情况下,这个组件是asp:RepeaterWeb 窗体控件,我需要传入类型以具有强类型的转发器控件,但是这是更普遍的问题。

我正在使用最新的 Visual Studio 2019。

Public Class ZipTwoBusinessObject
   Public Property Name As String
   Public Property Value1 As Decimal
   Public Property Value2 As Decimal
End Class

Dim ZipTwo As List(Of ZipTwoBusinessObject) = Test1.Zip(Test2,
                                                        Function(ccc, ddd) New With {
                                                          .Name = ccc.Name,
                                                          .Value1 = ccc.Value,
                                                          .Value2 = ddd.Value
                                                        }).ToList

Linq 表达式返回错误:BC30311 类型“列表(匿名类型:...)”的值无法转换为“列表(ZipTwoBusinessObject)”。

更新:

我可能会遍历 ZipTwo 的匿名元素并将其分配给ZipTwoBusinessObject. 但是使用 LinqZip方法是没有意义的,因为我可能会在同一个循环中压缩这两个对象。但是,这将是一个部分解决方案,因为使用Join而不是Zip. 是的,我确实Join在其他地方使用过。

标签: vb.netlinqlambda

解决方案


它想要New ZipTwoBusinessObject With而不是New With. 后者创建一个匿名类型。

更多信息:匿名类型 (Visual Basic)


推荐阅读