2009-11-02 58 views
1

我想一個值添加到struct不能增加價值的列出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; 

      } 
    } 

一切都正確讀出正確的號碼存儲在part_nummer

現在我想用actualISDN.Value.number = part_nummer將該數字添加到列表中,但是我收到一個錯誤信息,它說cannot be implicitly converted

我哪裏錯了?

回答

4

您試圖爲它指定一個IEnumerable字符串。當你寫這個

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

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

現在我得到一個新的錯誤,它說,返回值不能改變,導致它不是一個變量! – cordellcp3

+0

@ cordellcp3你說什麼沒有任何意義,除非你可以把它放在問題的上下文中你的問題,請包括你的問題,所以每個人都可以看到發生了什麼 – Joseph

+0

剛剛解決了問題在更改列表中的「數字」 - 值列表數字!所以我可以添加值到它!謝謝你的幫助! – cordellcp3

4

不要使用var,問題會變得清晰。

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

不真的明白!如果即時通訊使用「字符串」part_nummer而不是「var」,問題依然存在! :( – cordellcp3

2

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

part_nummer包含IEnumerable<T>

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

actualISDN.Value.number = part_nummer; 

你應該不是這樣。你最好寫類似的東西:

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

actualISDN.Value.number = part_nummer; 
+0

現在我得到一個新的錯誤,它說,返回值不能改變,導致它不是一個變量! – cordellcp3

+0

我敢打賭,錯誤是在最後一行actualISDN.Value是一個*複製*的結構,對該副本的更改不會傳播到「真實」值。嘗試類似於 ISDN複製= actualISDN.Value; copy.number = part_nummer; actualISDN = copy; –

+0

剛剛解決了將列表中的「number」-Value更改爲List 數字的問題!所以我可以給它添加值!謝謝您的幫助! – cordellcp3

0

無法讀取你的代碼不那麼呈現在小屏幕上,但是從註釋中採取儘量包裹在PART_NUMBER LINQ(LINQ到這裏)。單()

+0

剛剛解決了將列表中的「number」-Value更改爲List 數字的問題!所以我可以給它添加值!謝謝您的幫助! – cordellcp3