2008-11-03 9 views
1

Il y a un problème avec mon code ou je ne comprends pas complètement. J'ai le code suivant qui exécute une requête qui peut contenir plus d'un attribut RIGHT et que vous souhaitez stocker chacun dans un tableau pour fetching plus tard:LINQ à Array dans Silverlight 2

 var members = from myList in o_data.Descendants(bp + "Reaction") 
          select new 
          { 
           participant = myList.Element(bp + "RIGHT").Attribute(rdf + "resource").Value, 
          }; 

     return members.ToArray(); // I this the right conversion (to store all attributed values to array)? 

Comme ils ne disposent pas de collections dans Silverlight, je suis en train pour renvoyer juste un tableau ... quand j'appelle la fonction comme ceci:

FunctionName.GetValue (0) .ToString();

Il retourne {participant = # (ValueOfAttribute)}

Je veux juste retourner la valeur réelle, pas les accolades Curley ou « PARTICIPANT = » Qu'est-ce qui se passe ici?

Répondre

4

Les accolades sont présentes car l'implémentation ToString du type anonyme que vous créez dans la requête linq les y place.

est ici une implémentation ToString d'un type anonyme:

public override string ToString() 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("{ test = "); 
    builder.Append(this.<test>i__Field); 
    builder.Append(" }"); 
    return builder.ToString(); 
} 

Si vous ne souhaitez que retourner la valeur de « participant », supprimer tous les trucs de type anonyme et il suffit de sélectionner cette valeur:

var members = from myList in o_data.Descendants(bp + "Reaction") 
    select myList.Element(bp + "RIGHT").Attribute(rdf + "resource").Value; 
return members.ToArray(); 

Enfin, si vous voulez sélectionner plusieurs valeurs par élément (votre exemple de code a une virgule flottante qui l'implique), définissez un type nommé et créez des instances de celui-ci dans votre requête. Vous pouvez ensuite faire référence aux propriétés du type en dehors de la méthode de requête, car le tableau sera un tableau d'instances de ce type, plutôt qu'un tableau d'objet.

+0

Excellent, merci pour les informations supplémentaires – nightdev