我正在使用asp.net处理Web服务。 我正在创建一个时间表显示板,就像你在机场,公交车站或火车站看到的那样。 我负责为1站创建服务,还有其他人负责其他站。
我已经创建了我的网络服务,现在我试图消费其他人。 我可以使用它们,但其他人都让他们的网络服务返回不同的值,例如,我返回路线ID,旅程ID,起始位置,结束位置,停靠点,运行天数,时间。但其他人的网络服务可能会返回路线ID,开始,结束,停止,时间,平台,旅程状态等数据。在一个表中,以及与我在另一个Web服务中匹配的其他数据。
那么如何过滤掉我不需要的数据,例如示例中的平台和旅程状态。 此外,我如何将来自网络服务的每个人的数据合并到1个网格视图中,这样我就可以显示通过我的电台的所有列车。
我对网络服务很陌生,但我正在尝试,而且我已经完成了很多工作,我只是坚持这一点。
我希望这不是一个愚蠢的问题
Dim allStations As New List(Of ScheduleEntry)
Dim ws1 As New Hull.ArrivaServices()
For Each u1 As Hull.Result In ws1.ShowRouteByStation("hrw")
Dim s As New ScheduleEntry
s.StartTime = u1.Departure
s.StopTime = u1.Arrival
allStations.Add(s)
Next
Dim ws2 As New Heathrow.Heathrow_Airport()
For Each u2 As Heathrow.Result In ws2.GetHeathrowTrains
Dim s As New ScheduleEntry
s.StartTime = u2.BeginTime
s.StopTime = u2.EndTime
allStations.Add(s)
Next
GridView1.DataSource = allStations
GridView1.DataBind()
答案 0 :(得分:1)
我将数据集转换为数据表,使其相互兼容。
DatatableA.Merge(DatatableB)
所以现在DatatableA还包含所有DatatableB列和行。 如果列名相同且数据类型相同,则2列变为1。 所以我确保数据类型是相同的,如果它们不是我转换它们,然后将DatatableB中的列名重命名为DatatableA中的列名。
DatatableA.Columns(columnnumber).ColumnName = "NewName"
记住计算列号时,从左到右,第一列是0
如果我必须转换数据类型,我在DatatableB中创建了一个新列(与DatatableA中的相应列相同)
DatatableB.Columns.Add("NewColumnName", GetType(DataType))
然后我创建了一个循环来遍历collumn的数据表行和我想要转换的数据
Dim i as integer
Dim z as integer
i = 0
z = DatatableB.Rows.Count`
并使用
将新转换的数据放入NewColumn中Do until i = z
DatatableB.Rows(i)("ColumnName") = "ConvertedData)
Next
希望这有助于某人
答案 1 :(得分:0)
你的问题不是我们通常所说的排序和合并,而不是真的。最大的问题是你有许多服务都返回类似的数据格式,但不完全相同。所以你的第一步就是让它们完全相同:在你的程序中。
首先,确定要在网格中显示的内容。假设您只想显示开始和停止时间。因此,创建一个可以保持开始和停止时间的课程:
Public Class ScheduleEntry
Public Property Start As DateTime
Public Property Stop As DateTime
End Class
您将使用List(Of ScheduleEntry)
填充网格。
现在,根据您拨打的服务,只需点击“开始”和“停止”,然后将其添加到列表中即可。假设具有不同返回值的两个服务的情况:
Dim allStations As New List(Of ScheduleEntry)
Dim ws1 As New SERVICE1.CLASS()
For Each u1 As SERVICE1.Result In ws1.METHOD
Dim s As New ScheduleEntry
s.StartTime = u1.Departure
s.StopTime = u1.Arrival
allStations.Add(s)
Next
Dim ws2 As New SERVICE2.CLASS()
For Each u2 As SERVICE2.Result In ws2.METHOD2
Dim s As New ScheduleEntry
s.StartTime = u2.BeginTime
s.StopTime = u2.EndTime
allStations.Add(s)
Next
GridView1.DataSource = allStations
GridView1.DataBind()