2016-11-08 17 views
0

Не могли бы вы рассказать мне, как я могу поместить элементы из списка в двумерный массив в C#?Преобразование списка в массив C#

tura = new string[howManyWords, 6]; 
    howManyWords = 0; 

    foreach (words word in wc.words) 
    { 
     if (word.CategoryNumber == scb.Category) 
     { 
      tura[howManyWords] ......; howManyWords++; 
     } 
    } 

У меня есть список из файла XML. Я работаю в Unity.

<?xml version="1.0" encoding="utf-8"?> 
<WordCollection> 
    <Words> 
    <Word name="$mezczyzna"> 
     <CategoryNumber>1</CategoryNumber> 
     <PolishName>mężczyzna</PolishName> 
     <EnglishName>a man</EnglishName> 
     <AudioName>man.mp3</AudioName> 
     <ImageName>man</ImageName> 
     <ImageLocalisationWidth>200</ImageLocalisationWidth> 
     <ImageLocalisationHigh>700</ImageLocalisationHigh> 
    </Word> 
    </Words> 
</WordCollection> 
+3

Это не похоже на двумерный массив для меня. Это похоже на список объектов типа Word. Почему вы пытаетесь сделать его 2d-массивом и 2-мерным массивом? Что вы ожидаете от нового массива? – Dispersia

+0

Существует встроенный метод List.ToArray(): https://msdn.microsoft.com/en-us/library/x303t819(v=vs.110).aspx, который вы можете использовать. –

+0

@dubstylee, который не является массивом 2d. – Dispersia

ответ

1

Поскольку мы считаем, что вы имеете в виду по словарю, и по ContentNumber, вот пример:

void Main() 
{ 
    List<Word> Words = new List<UserQuery.Word> { new Word { CategoryNumber = 0, EnglishName = "WORD1" }, new Word { CategoryNumber = 1, EnglishName = "WORD2" }, new Word { CategoryNumber = 1, EnglishName = "WORD3" } }; 

    Dictionary<CategoryTypes, List<Word>> categoryWords = Words.GroupBy(word => word.CategoryNumber).ToDictionary(x => (CategoryTypes)x.Key, x => x.ToList()); 

    if (categoryWords.ContainsKey(CategoryTypes.Category2)) 
    { 
     List<Word> words = categoryWords[CategoryTypes.Category2]; 

     for (int i = 0; i < words.Count; i++) 
     { 
      Console.WriteLine(words[i].EnglishName); 
     } 
    } 
} 

class Word 
{ 
    public int CategoryNumber { get; set; } 
    public string EnglishName { get; set; } 
} 

enum CategoryTypes 
{ 
    Category1 = 0, 
    Category2 = 1 
} 

Вы можете вызвать словарь categoryWords от типа перечисления, а затем есть только ваш список слов.

-1

Можете ли вы использовать LINQ? Он предоставляет метод ToArray(), который, вероятно, является вашим самым простым вариантом. Как это:

> var list = new List<string> { "one", "two", "three" }; 
> var array = list.ToArray(); 
> list 
List<string>(3) { "one", "two", "three" } 
> array 
string[3] { "one", "two", "three" } 
> 
+0

Снова. Это не двумерный массив. – Dispersia

+0

Да, справедливая точка. Я думаю, что @Hogan прав, и они ищут словарь и просто не осознают этого. :) –

+0

Ya, я не уверен, что именно он хочет, это может быть словарь не может, я просто имел в виду, что ваш ответ не вернет двухмерный массив, он вернет только один размерный массив типа Word – Dispersia

Смежные вопросы