ForEach仅返回最后一个值 [英] ForEach Returns only the last value

查看:94
本文介绍了ForEach仅返回最后一个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难用foreach返回值.
它必须返回正确的6行,但是每一行都有一个唯一的列,并且仅显示最后一行,有人知道我能做什么吗?

Hi, I'm having a hard time returning values using the foreach.
It has to return me 6 lines that is correct, but there is a column that is unique for each line and it shows only the last one, does anyone have any idea what I can do?

Imports Newtonsoft.Json
Imports System.IO
Imports System.Net
Imports Microsoft.SqlServer.Server

Partial Public Class WSMegaSena
    <Microsoft.SqlServer.Server.SqlFunction(DataAccess:=DataAccessKind.Read, FillRowMethodName:="FillRow", TableDefinition:="NumeroConcurso nvarchar(max),Dezena nvarchar(max),DataRealizacao nvarchar(max)")> _
    Public Shared Function fn_Retorna_ResultadoMS() As IEnumerable
        Dim rowsArray As New ArrayList()
        SetData(rowsArray)
        Return rowsArray
    End Function

    Public Shared Sub FillRow(ByVal obj As Object, ByRef NumeroConcurso As String, _
                              ByRef Dezena As String, _
                              ByRef DataRealizacao As String
                              )
        Dim row As Object() = DirectCast(obj, Object())


        NumeroConcurso = DirectCast(row(0), String)
        Dezena = DirectCast(row(1), String)
        DataRealizacao = DirectCast(row(2), String)
    End Sub

    Public Shared Sub SetData(ByVal rowsArray As ArrayList)
        Dim address As String = "http://wsloterias.azurewebsites.net/api/sorteio/getresultado/1"
        Dim client As WebClient = New WebClient()
        Dim reader As StreamReader = New StreamReader(client.OpenRead(address))
        Dim json = (reader.ReadToEnd)
        Dim objs As RootObject = JsonConvert.DeserializeObject(Of RootObject)(json)
        Dim column As Object() = New Object(3) {}

        Dim numeroConcurso As String = 0, Dezena As String = 0, DataRealizacao = ""
        Dim i As Integer = 0

        For Each nums In objs.Sorteios
            For Each ds In nums.Numeros
                numeroConcurso = DirectCast(objs.NumeroConcurso.ToString, String)
                Dezena = ds.ToString
                DataRealizacao = DirectCast(objs.Data.ToString, String)
                column(0) = numeroConcurso
                column(1) = Dezena
                column(2) = DataRealizacao
                rowsArray.Add(column)

                i = i + 1
            Next ds
        Next nums

    End Sub
End Class

在第10列中,您必须退还给我50 22 06 37 30 17
它使我回到了所有行17

In the 10th column you have to return me 50 22 06 37 30 17
And it has returned me 17 to all lines

Fabiano Carvalho

Fabiano Carvalho

推荐答案

我认为您必须移动"Dim列……" 内部变量 对于每个循环.每行应代表一个新的不同对象.

I think that you have to move the ‘Dim column…’ variable to the inner For Each loop. Each row should represent a new different object.


这篇关于ForEach仅返回最后一个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆