2009-03-23 1 views
0

私はいくつかの参考文献をオンラインで見ましたが、運があまりありませんでした。うまくいけば、それは私が見落としている単純なものですが、私のコードでは、参加者リストをループし、照会結果を配列に格納しています。わかりますように、私のforeachステートメントは、最初のものが置き換えられたので、配列の最後の要素を追加するだけです。AnonymousTypeからの配列の保持

次の配列インデックスにどのように値を追加するだけですか?したがって、配列に[2]がある場合、this.physEntityPhysicalLeftEntityIDsには常に[1]ではなく[2]が含まれていることを確認するにはどうすればよいですか?明確にする必要がある場合は、教えてください。

まあ
if (leftParticipants.Length >= 0) // Check to see if LeftParticipants exists 
{ 
    for (int c = 0; c < leftParticipants.Length; c++) 
    { 
     var l_entityIDs = 
      from BioList in o_data.Descendants(bp + "physicalEntityParticipant") 
      where BioList.Attribute(rdf + "ID").Value == leftParticipants[c].TrimStart('#') 
      select new 
      { 
       o_entityIDs = BioList.Elements(bp + "PHYSICAL-ENTITY") 
       .Select(entityID => entityID.Attribute(rdf + "resource").Value).ToArray() 
      }; 

     foreach (var entity in l_entityIDs) 
     { 
      this.physEntityPhysicalLeftEntityIDs = entity.o_entityIDs; // Set SmallMolecules from Left 
     } 
    } 
} 
+0

physEntityPhysicalLeftEntityIDsのタイプ – JaredPar

+0

質問:「配列を匿名型のインスタンスで埋め込むにはどうすればよいですか」私は質問が何であるかを正確にはわかりません。 – Eddie

+0

@JaredPar physEntityPhysicalLeftEntityIDsの型はString []ですが、それを含めるべきでした、ごめんなさい。 – nightdev

答えて

1

physEntityPhysicalLeftEntityIDsが配列である場合、あなたはforeachループを通るたびに、インデックス変数を初期化し、それをインクリメントする必要があります:あなたは配列に十分なスペースが割り当てられたことを前提としてい

int destIndex = 0;  
foreach (var entity in l_entityIDs) 
{ 
    this.physEntityPhysicalLeftEntityIDs[destIndex] = entity.o_entityIDs; // Set SmallMolecules from Left 
    ++destIndex; 
} 

。配列に収まるよりも多くのアイテムがある場合は、範囲外のインデックスを取得します。

上記ループの前に十分なスペースが配列でありますことを確認するために、あなたはそれを割り当てることができます。

this.physEntityPhysicalLeftEntityIds = new int[l_entityIDs.Count()]; 

は、適切な型とその行でintを交換してください(あなたが格納されているどのような種類言いませんでした配列内にある)。

+0

良いヒント!型はString []です...あなたが意味すると思います。 new int [l_entityIDs.Count()]; – nightdev

+0

はい、そうです。修正されます。 –

1

あなたは、配列/リストのようにそれを扱いたい場合は、あなたがしなければならないすべては

l_enityIDs.ToList(ある)

、その後.Add(新しい{o_entityIDs = FOO} )

これをIEnumerableに追加するには、ソースエンベロブル内のすべてを返す拡張メソッドと、次の値に追加するyieldステートメントが必要です。

関連する問題