2013-10-08 133 views
0

我試圖通過名稱從數組中獲取值。這樣做的目的是將這些參數發送到SSRS和事務查詢。按名稱從數組中獲取值

我有一個XML類型的parameterValue:

'report paramerters 
Dim parametersTransactional(3) As ParameterValue 

parametersTransactional(0) = New ParameterValue() 
parametersTransactional(0).Name = "StartDate" 
parametersTransactional(0).Value = "2012-01-01T00:00:00" 

parametersTransactional(1) = New ParameterValue() 
parametersTransactional(1).Name = "EndDate" 
parametersTransactional(1).Value = "2012-06-01T00:00:00" 

parametersTransactional(2) = New ParameterValue() 
parametersTransactional(2).Name = CustomersCustomerLocation" 
parametersTransactional(2).Value = "1, 2, 3, 4, 5" 

我想我能得到一個名字的索引,然後得到這樣的價值;

Dim startDate As String = "StartDate" 
Dim idxStartDate As Integer = Array.IndexOf(parameters, startDate) 

或者這樣:

Dim start2 As Integer = parameters.FindIndex(startDate) 

的parameterValue的類型爲:

'''<remarks/> 
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.17929"), _ 
System.SerializableAttribute(), _ 
System.Diagnostics.DebuggerStepThroughAttribute(), _ 
System.ComponentModel.DesignerCategoryAttribute("code"), _ 
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices")> _ 
Partial Public Class ParameterValue 
Inherits ParameterValueOrFieldReference 

Private nameField As String 

Private valueField As String 

Private labelField As String 

'''<remarks/> 
Public Property Name() As String 
    Get 
     Return Me.nameField 
    End Get 
    Set 
     Me.nameField = value 
    End Set 
End Property 

'''<remarks/> 
Public Property Value() As String 
    Get 
     Return Me.valueField 
    End Get 
    Set 
     Me.valueField = value 
    End Set 
End Property 

'''<remarks/> 
Public Property Label() As String 
    Get 
     Return Me.labelField 
    End Get 
    Set 
     Me.labelField = value 
    End Set 
End Property 

末級

所以我錯過了一些關鍵的一步。

+1

聽起來像你想要一個字典,而不是一個數組? – crashmstr

+0

@ crashmstr我可以。 ParameterValue是我可以發送給SSRS的值。我也想將這些值提取到單個參數中以用於事務性查詢。我應該通過ParameterValue循環並將值放在字典中? – BClaydon

回答

2

您可以使用FirstFirstOrDefault方法輕鬆完成此操作。它們都是LINQ擴展方法。例如:

Dim p As ParameterValue = parameters.FirstOrDefault(function(x) x.Name = "StartDate") 
+0

是的,工作!它看起來像這樣:Dim p As ParameterValue = parameters.FirstOrDefault(Function(x)x.Name =「StartDate」) Dim startDate As String = p.Value.ToString() – BClaydon

1

你的第二次嘗試正在接近。像這樣的東西將工作:

Dim startdate As DateTime = DateTime.Parse(parametersTransactional(Array.FindIndex(parametersTransactional, Function(x) x.Name = "StartDate")).Value) 
+0

我也會試試。謝謝! – BClaydon