Vb.net 在datatable上使用linq时出错

Vb.net 在datatable上使用linq时出错,vb.net,ms-access,Vb.net,Ms Access,我正在尝试运行以下代码,将我的datatable转换为在linq中可用,但当我执行该语句时,我得到以下语句,我在下面得到错误,新entires的返回值中只有location和ordernumber,我必须这样做,因为我支持旧版access 97系统谢谢 Dim total = From row In newEntries.AsEnumerable() Select row.Field(Of Int32)("location") Distinct retVal =

我正在尝试运行以下代码,将我的datatable转换为在linq中可用,但当我执行该语句时,我得到以下语句,我在下面得到错误,新entires的返回值中只有location和ordernumber,我必须这样做,因为我支持旧版access 97系统谢谢

 Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int32)("location") Distinct
    retVal = Convert.ToInt32(total)

这是我的全部代码,但我仍然得到一个无效的类型转换错误,他们的数据存在于这个订单上

        Dim retVal As Int32
       Dim newEntries As New DataTable
     Dim script As String = scriptBuilder.GetDistinctOrdersForLocations(OrderNumber)
    newEntries = connection.SqlSelectToDataTable(script)
    Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int32)("location") Distinct
    retVal = total.Count()

您的LINQ查询正在返回一个集合。您应该使用类似于
First
First或default
的内容

我对VB LINQ有些生疏,但请尝试:

retVal = Convert.ToInt32(total.First())

注意:如果集合中没有项目,这将引发错误。

您的LINQ查询正在返回集合。您应该使用类似于
First
First或default
的内容

我对VB LINQ有些生疏,但请尝试:

retVal = Convert.ToInt32(total.First())

注意:如果集合中没有项目,这将引发错误。

您的LINQ查询正在返回集合。您应该使用类似于
First
First或default
的内容

我对VB LINQ有些生疏,但请尝试:

retVal = Convert.ToInt32(total.First())

注意:如果集合中没有项目,这将引发错误。

您的LINQ查询正在返回集合。您应该使用类似于
First
First或default
的内容

我对VB LINQ有些生疏,但请尝试:

retVal = Convert.ToInt32(total.First())

注意:如果集合中没有项目,则此操作将引发错误。

如果需要集合计数,请执行以下操作:

retVal=total.Count()

这将返回您编写的独特查询的计数


为了澄清,@David B确定位置的数据类型是int16而不是int32,因此在linq查询中更改此类型可以解决问题。

如果您想要收集的计数,请执行以下操作:

retVal=total.Count()

这将返回您编写的独特查询的计数


为了澄清,@David B确定位置的数据类型是int16而不是int32,因此在linq查询中更改此类型可以解决问题。

如果您想要收集的计数,请执行以下操作:

retVal=total.Count()

这将返回您编写的独特查询的计数


为了澄清,@David B确定位置的数据类型是int16而不是int32,因此在linq查询中更改此类型可以解决问题。

如果您想要收集的计数,请执行以下操作:

retVal=total.Count()

这将返回您编写的独特查询的计数


只是为了澄清,@David B确定location的数据类型是int16而不是int32,因此在linq查询中更改此类型解决了问题。

重要的是,当您编写linq查询并将其分配给变量时,必须了解该变量基本上包含一个查询对象,而不是运行查询的结果。为了获得查询结果的值,您需要调用查询对象上的某些方法,例如:

total.Single() ' Assumes you expect the query to return exactly one result.

在编写LINQ查询并将其分配给变量时,必须了解该变量基本上包含一个查询对象,而不是运行查询的结果。为了获得查询结果的值,您需要调用查询对象上的某些方法,例如:

total.Single() ' Assumes you expect the query to return exactly one result.

在编写LINQ查询并将其分配给变量时,必须了解该变量基本上包含一个查询对象,而不是运行查询的结果。为了获得查询结果的值,您需要调用查询对象上的某些方法,例如:

total.Single() ' Assumes you expect the query to return exactly one result.

在编写LINQ查询并将其分配给变量时,必须了解该变量基本上包含一个查询对象,而不是运行查询的结果。为了获得查询结果的值,您需要调用查询对象上的某些方法,例如:

total.Single() ' Assumes you expect the query to return exactly one result.

我把代码改成了int16。这里工作的是其他人的代码。谢谢@Ric

    Dim retVal As Int32
    Dim newEntries As New DataTable
     Dim script As String = scriptBuilder.GetDistinctOrdersForLocations(OrderNumber)
    newEntries = connection.SqlSelectToDataTable(script)
    Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int16)("location") Distinct
    retVal = total.Count()

我把代码改成了int16。这里工作的是其他人的代码。谢谢@Ric

    Dim retVal As Int32
    Dim newEntries As New DataTable
     Dim script As String = scriptBuilder.GetDistinctOrdersForLocations(OrderNumber)
    newEntries = connection.SqlSelectToDataTable(script)
    Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int16)("location") Distinct
    retVal = total.Count()

我把代码改成了int16。这里工作的是其他人的代码。谢谢@Ric

    Dim retVal As Int32
    Dim newEntries As New DataTable
     Dim script As String = scriptBuilder.GetDistinctOrdersForLocations(OrderNumber)
    newEntries = connection.SqlSelectToDataTable(script)
    Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int16)("location") Distinct
    retVal = total.Count()

我把代码改成了int16。这里工作的是其他人的代码。谢谢@Ric

    Dim retVal As Int32
    Dim newEntries As New DataTable
     Dim script As String = scriptBuilder.GetDistinctOrdersForLocations(OrderNumber)
    newEntries = connection.SqlSelectToDataTable(script)
    Dim total = From row In newEntries.AsEnumerable()
            Select row.Field(Of Int16)("location") Distinct
    retVal = total.Count()

total是一个
IEnumerable
,而不是一个整数值。您想做什么?@Ric我需要对新条目中的现有数据应用distinct命令,因为access 97不支持distinct count?我只需要从select row语句返回的值。由于distinct返回的是整数值的集合,因此无法将集合转换为int。下面的答案说明了这一点。total是一个
IEnumerable
,而不是一个整数值。您想做什么?@Ric我需要对新条目中的现有数据应用distinct命令,因为access 97不支持distinct count?我只需要从select row语句返回的值。由于distinct返回的是整数值的集合,因此无法将集合转换为int。下面的答案说明了这一点。total是一个
IEnumerable
,而不是一个整数值。您想做什么?@Ric我需要对新条目中的现有数据应用distinct命令,因为access 97不支持distinct count?我只需要从select row语句返回的值。由于distinct返回的是整数值的集合,因此无法将集合转换为int。下面的答案说明了这一点。total是一个
IEnumerable
,而不是一个整数值。您想做什么?@Ric我需要对新条目中的现有数据应用distinct命令,因为access 97不支持distinct count?我只是