Vb.net 对于每个迭代生成错误

Vb.net 对于每个迭代生成错误,vb.net,visual-studio-2012,Vb.net,Visual Studio 2012,我正在从头开始重建我的网站,对数据库做了重大更改。下面的函数在旧网站项目中工作得非常好,但现在我已经将代码复制到新项目中,VS2012不喜欢在中为custorders中的每个订单添加“order”,表示订单未声明,并且由于其保护级别可能无法访问 Public Shared Function GetOrderDisplaybyCustomerId(ByVal customerId As Integer) As List(Of OrderDisplay) Dim list As New Li

我正在从头开始重建我的网站,对数据库做了重大更改。下面的函数在旧网站项目中工作得非常好,但现在我已经将代码复制到新项目中,VS2012不喜欢在中为custorders中的每个订单添加“order”,表示订单未声明,并且由于其保护级别可能无法访问

Public Shared Function GetOrderDisplaybyCustomerId(ByVal customerId As Integer) As List(Of OrderDisplay)
    Dim list As New List(Of OrderDisplay)
    Dim item As New OrderDisplay
    Using ctx As New webEntities
        Dim custorders = (From o In ctx.salesorders
                         Where o.order_divisionId = customerId
                         Join s In ctx.addresses On o.order_shippingAddressId Equals s.addressId
                         Join st In ctx.states On s.address_stateProvinceId Equals st.stateId
                         Order By o.OrderDate Ascending
                         Select New With {o.OrderDate, o.InvoiceNumber, o.CustomerPONumber, o.AccountNumber, s.StreetAddress, s.City, st.AbbreviatedName}).ToList()
        If custorders.Count > 0 Then
            For Each order In custorders
                item._orderdate = order.OrderDate.ToShortDateString()
                item._invoicenumber = order.InvoiceNumber
                item._customerPOnumber = order.CustomerPONumber
                item._acctnumber = order.AccountNumber
                item.Address = order.StreetAddress
                item.City = order.City
                item.State = order.AbbreviatedName
                list.Add(item)
            Next
            Return list
        Else
            Return Nothing
        End If
    End Using
End Function

我在其他功能中也得到了完全相同的行为,任何建议都值得赞赏。

我猜您有一个全局项目级别的设置:

Option Infer Off

在项目设置中检查它以确保
选项推断打开
,然后在单个类/模块文件中,确保没有
选项推断关闭

我猜您有一个全局项目级别的设置:

Option Infer Off

在项目设置中检查它以确保
选项推断打开
,然后在您的单个类/模块文件中,确保没有
选项推断关闭

为什么要首先创建匿名类型,然后立即将其转换为特定类型(通过重新使用一个实例-我希望这会给出错误)?为什么不在LINQ查询中创建OrderDisplay实体呢?因为将Dim custorders更改为Dim custorders as List(Of OrderDisplay)会在VS中产生一个更为明显的错误。您将如何处理?对于您已经拥有的
.ToList()
,如果您返回
OrderDisplay
s,我预计不会出现错误。对不起,我对VB的了解还不够,我还建议你每次在循环中创建一个新项目,现在,你总是插入相同的项目。最后,您的列表将包含一组相同的类型。为什么您首先创建一个匿名类型,只是为了立即将其转换为特定类型(通过重新使用一个实例-我希望这会产生错误)?为什么不在LINQ查询中创建OrderDisplay实体呢?因为将Dim custorders更改为Dim custorders as List(Of OrderDisplay)会在VS中产生一个更为明显的错误。您将如何处理?对于您已经拥有的
.ToList()
,如果您返回
OrderDisplay
s,我预计不会出现错误。对不起,我对VB的了解还不够,我还建议你每次在循环中创建一个新项目,现在,你总是插入相同的项目。最后,您的列表将包含一组相同的选项。默认情况下,选项“推断”设置为“开”,并且我没有更改它。选项“推断”是我能想到的唯一一个可能导致所有位置的有趣错误的选项。对不起,我想不出别的了。。。也许您尝试使用MSBuild构建解决方案,看看编译器会抱怨什么?默认情况下,选项Infer设置为on,而我没有更改它。选项Infer是我能想到的唯一一个可能导致所有地方都出现有趣错误的方法。对不起,我想不出别的了。。。也许您尝试使用MSBuild构建解决方案,看看编译器会抱怨什么?