2013-10-08 136 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