2016-05-10 7 views
0

このpowershellロジックをC#に変換することで苦労します。私の主付着点は、ループのこの値を取得上変換される:$mProperties.$sFieldQuery.DBFields[$i]PowerShell HashtableとforループをCに変換する

$mProperties = @{} 
$sFields = @() 
$dbFields = @() 
$dbAliasNames = @() 

$metaProperties[$sFieldQuery] = @{ 
        SFields = $sFields 
        DBFields = $dbFields 
        DBAliasNames = $dbAliasNames 
        DBFieldValues = @() 
        InternalName = "" 
        } 

foreach ($sFieldQuery in $mProperties.Keys) 
{ 
    for ($i=0; $i -lt $mProperties.$sFieldQuery.DBAliasNames.Length; $i++) 
    { 
     $eQuery += ", " + $mProperties.$sFieldQuery.DBFields[$i] + " AS " + $mProperties.$sFieldQuery.DBAliasNames[$i] 
    } 
} 
+2

何を試しましたか? –

+0

私の間違いは、mPropertiesをHashtableとして宣言していたようです。 – eHaze

答えて

1

ハッシュテーブルドット表記は、機能的に連想インデックスを使用するのと同じである。

$HashTable = @{ "someKey" = "aValue" } 

# This 
$HashTable."someKey" 
# is functionally equivalent to 
$HashTable["someKey"] 

そうで任意DictionaryタイプとC#の場合、.の代わりに[]のインデックス演算子を使用してください:

Dictionary<string,Dictionary<string,object[]>> mProperties = new Dictionary<string,Dictionary<string,object[]>>(); 
// populate mProperties... 

string eQuery = ""; 

foreach(string sFieldQuery in mProperties.Keys) 
{ 
    for(int i = 0; i < mProperties[sFieldQuery]["DBAliasNames"].Length; i++) 
    { 
     eQuery += ", " + mProperties[sFieldQuery]["DBFields"][i] + " AS " + mProperties[sFieldQuery]["DBAliasNames"][i]; 
    } 
} 
+0

mPropertiesの作成方法は? – eHaze

関連する問題