2009-11-02 5 views
1

Je voudrais ajouter une valeur à une structImpossible ajouter de la valeur à la liste en C#

if (!existISDNteilnehmer(split)) 
{ 
    isdnObjs.Add(new ISDN() { name = split, number = "", 
         channels = new List<string>()}); 
}     
ISDN? actualISDN = getISDN(split); 

if (index < ISDN_teilnehmer.Count()) 
{ 
    var numbers = 
      from num in xISDN.XPathSelectElements("//member[name='number']") 
       where num.IsAfter(xISDN) && 
        num.IsBefore(ISDN_teilnehmer.ElementAt(index)) 
      select num; 

    foreach (var nums in numbers) 
    { 
      if (nums.Element("name").Value == "number") 
      { 
       var nummer = nums.XPathSelectElements("value"); 
       var part_nummer = 
        from n in nummer 
        select n.Value; 
       //string temp = part_nummer; 

       actualISDN.Value.number = part_nummer; 

      } 
    } 

Tout est lu correctement et le nombre correct est stocké dans part_nummer.

Maintenant, je veux ajouter le numéro à la liste avec actualISDN.Value.number = part_nummer mais j'obtiens une erreur qui le dit cannot be implicitly converted.

Où est-ce que je me trompe?

Répondre

4

Vous essayez d'affecter une chaîne à un IEnumerable à l'apparence.

var part_nummer = from n in nummer 
    select n.Value; 
//string temp = part_nummer; 

actualISDN.Value.number = part_nummer; 

Vous devriez faire ceci:

var part_nummer = from n in nummer 
    select n.Value; 
//string temp = part_nummer; 

actualISDN.Value.number = part_nummer.FirstOrDefault(); 
+0

Maintenant, j'ai une nouvelle erreur, qui dit que la valeur de retour ne peut pas être changé, parce que ce n'est pas une variable! – cordellcp3

+0

@ cordellcp3 Ce que vous dites n'a pas de sens, sauf si vous pouvez le mettre dans le contexte de la question S'il vous plaît inclure les erreurs que vous obtenez dans votre question afin que tout le monde peut voir ce qui se passe – Joseph

+0

Juste résolu le problème en changeant le "numéro" -Valeur dans la liste à un numéro de liste ! Donc je pourrais ajouter Merci pour l'aide! – cordellcp3

4

N'utilisez pas var et le problème deviendra clair.

var part_nummer = from n in nummer 
select n.Value; 
//string temp = part_nummer; 
actualISDN.Value.number = part_nummer; 
+0

Ne comprends vraiment pas! Si im utilisant "string" part_nummer au lieu de "var" le problème existe toujours! :( – cordellcp3

2

Lorsque vous écrivez ceci:

var part_nummer = from n in nummer 
    select n.Value; 

part_nummer contient un IEnumerable<T>. Vous feriez mieux d'écrire quelque chose comme ça:

var nummer = nums.XPathSelectElement("value"); // not XPathSelectElements ! 
var part_nummer = nummer.Value; 

actualISDN.Value.number = part_nummer; 
+0

Maintenant, j'ai eu une nouvelle erreur, qui dit que la valeur de retour ne peut pas être changé, parce que ce n'est pas une variable! – cordellcp3

+0

Je parie que l'erreur est dans la dernière ligne.actualISDN.Value est un * copy * de la structure RNIS Les modifications apportées à cette copie ne se propagent pas à la valeur "réelle" Essayez quelque chose comme ISDN copy = actualISDN.Value; copy.number = part_nummer; actualISDN = copie; –

+0

Juste résolu le problème en changeant le "nombre" -Valeur dans la liste à un numéro de liste ! Donc, je pourrais ajouter des valeurs à cela! Merci pour l'aide! – cordellcp3

0

ne peut pas lire votre code, il ne rend pas bien sur un petit écran, mais pris des commentaires Essayez d'envelopper le LINQ dans PART_NUMBER (LINQ va ici) .Single()

+0

Juste résolu le problème en changeant le "nombre" -Valeur dans la liste à un numéro de liste ! Donc, je pourrais ajouter des valeurs à cela! Merci pour l'aide! – cordellcp3