Domanda

Ho guardato on-line per alcuni riferimenti, ma non ha avuto troppa fortuna. Speriamo che sia solo qualche semplice cosa che sto con vista, ma nel mio codice sto scorrendo la lista dei partecipanti e memorizzare i risultati interrogati nella matrice. Come si può dire, la mia dichiarazione foreach sarà solo aggiungere l'ultimo elemento della matrice in quanto il primo è sostituito.

Come posso solo aggiungere il valore al successivo indice di array. Quindi, se [2] nella matrice ci sono, come posso fare in modo che this.physEntityPhysicalLeftEntityIDs contiene [2] invece di sempre [1]? Se ho bisogno di chiarire, fatemelo sapere.

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
       }
    }
}
È stato utile?

Soluzione

Se physEntityPhysicalLeftEntityIDs è un array, è necessario inizializzare una variabile indice e incrementarlo ogni volta attraverso il ciclo foreach:

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

Ciò presuppone che avete assegnato abbastanza spazio nella matrice. Se vi sono più oggetti di quelli che adattano nella matrice, si sta andando ad ottenere un indice di errore di limiti.

Per fare in modo che ci sia abbastanza spazio nella matrice, è possibile allocare prima del ciclo precedente:

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

Sostituire int in quella linea con il tipo corretto (non hai detto che tipo che viene memorizzato nella matrice).

Altri suggerimenti

Beh, se si vuole trattarlo come un array / lista, tutto quello che dovete fare è

l_enityIDs.ToList ()

e poi .Add (nuove {o_entityIDs = foo})

Se si desidera aggiungere alla IEnumerable, che richiede un metodo di estensione che restituisce tutto nel enumberable fonte, e una dichiarazione resa aggiungendo sul valore successivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top