2014-01-06 1 views
0

У меня есть цикл для childobjects следующим образом,Для преобразования XElement в INT значение,

List<float?> LValues = new List<float?>(); 
List<float?> IValues = new List<float?>(); 
List<float?> BValues = new List<float?>(); 
List<HMData>[] data = new List<HMData>[4]; 
float? Value_LfromList = 0; 
float? Value_IfromList = 0; 
float? Value_BfromList = 0; 

foreach (var item in Read_xml_for_childobjects_id.Root.Descendants("object")) 
{ 
    data[item] = new List<HMData>(); // Error occuring on this line 
    for (int k = 0; k < 7; k++) 
    { 
     Value_LfromList = LValues.ElementAt(k); 
     Value_IfromList = IValues.ElementAt(k); 
     Value_BfromList = BValues.ElementAt(k); 
     data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList }); 
    } 
} 

на следующей строке,

data[item] = new List<HeatMapData>(); 

я получаю ошибку следующим образом,

Невозможно неявно преобразовать тип 'System.XML.Linq.XElement' в 'int'.An Явное преобразование существует (вам не хватает литой?),

------- Обновлен Вопрос ------

int indexer=0; 
foreach (var item in Read_xml_for_childobjects_id.Root.Descendants("object")) 
{ 
data[indexer] = new List<HMData>(); 
for (int k = 0; k < 7; k++) 
{ 
    Value_LromList = LValues.ElementAt(k); 
    Value_IfromList = IValues.ElementAt(k); 
    Value_BfromList = BValues.ElementAt(k); 
    data[k].Add(new HMData { x = Value_LfromList, y = Value_IfromList, z = Value_BfromList }); 
    }  
    indexer++; 
} 

, но я получаю ошибку, как ссылка на объект не установлено на экземпляр объекта, как только я вхожу в секунду для петли к значению, у меня всего 4 childobjects, где каждый childobjects населяют каждый из списка 7 elements..please проверки ссылки на подробный вопрос .. Question with explanation Имея реальный трудное время, оценит вашу помощь, спасибо,

ответ

3

Хотя исключение самоочевидно здесь, что вы пытаетесь передать XElement индексируемому, где требуется int. Для того, чтобы пин-точка это

data[item] 

требует значение INT вместо пункта . Что в вашем случае XElement. Отсюда и ошибка.

Пример (только пример, не используйте его): Это должно быть что-то вроде

int indexer= 0; 
data[indexer++] = new List<HeatMapData>(); 
+0

У меня возникают проблемы с передачей междунар в индекс массива, не могли бы вы показать мне, например, как я могу это сделать , – Reshma

+0

Я знаю ошибку, я знал, что мне нужно передать значение int, но не знаю, как это сделать, даже когда я пытаюсь разобрать элемент в int как данные [int.Parse (item)] .. I все равно получите ошибку. Наилучшее перегруженное соответствие метода для int.Parse (item) имеет некоторые недопустимые аргументы метода – Reshma

+0

, вы не можете разобрать XElement для int. Вместо этого используйте значение int. Здесь вам не хватает того, что ead_xml_for_childobjects_id.Root.Descendants («object») возвращает XElement, а не значение int. – Ehsan