2014-07-08 2 views
1

Допустим, я получил список строк, как это:Возьмите значения из списка и назначить новое свойство

List<string> cities = new List<string>(); 
    cities.Add("New York"); 
    cities.Add("Mumbai"); 
    cities.Add("Berlin"); 
    cities.Add("Istanbul"); 

У меня также есть четыре строки, как это:

string city1 
string city2 
string city3 
string city4 

Есть хороший способ каким-то образом перебирать список и назначать каждому вар города из списка? Я ищу способ «вытащить» значения из списка и назначить его новой строке.

foreach(var city in cities) 
{ 
    string city1 = cities[0];, 
    string city2 = cities[1]; 
} 

Возможно, кто-то знает намного лучший способ выполнить одно и то же? Спасибо!

Моей реальная проблема заключается в следующей, вот мое мнение:

<li style="left: 234px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-2.jpg" alt=""> </li> 
          <li style="left: 468px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-3.jpg" alt=""> </li> 
          <li style="left: 702px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-4.jpg" alt=""> </li> 
          <li style="right: 0px; margin: 0px; position: absolute; width: 234px; overflow: hidden;" class=""> <img src="~/Content/img/slide-5.jpg" alt=""> </li> 

Поскольку все литиево-элементы имеют различные стили петли я косяк по списку hrefs пути я использую, я не понимаю, как это сделать, если мои hrefs не привязаны к одному вару ... Надеюсь, что я достаточно ясен ...

+2

Почему просто не делать 'строку city1 = город [0];', 'строки City2 = город [1];', и т.д.? –

+0

Хорошо? Я обновил цикл в вопросе, это правильно? – user2915962

+0

Если вы хотите сделать это динамически, я бы сказал, что вы не можете. Вот почему коллекции были сделаны. Если вы хотите сделать их статически, вы можете просто назначить каждую переменную индексом коллекций, например. города [0] – SpaceApple

ответ

0

почему бы не сделать, как было предложено "Грант Winney". Простейший путь до и до тех пор, пока вы не зафиксируете записи в списке и фиксированном количестве строк.

string city1 = cities[0]; 
string city2 = cities[1]; 
string city3 = cities[2]; 
string city4 = cities[3]; 
+0

@downvoter: комментарии plzz? –

+1

Я собираюсь отметить это как ответ, его так же, как @Grant Winney предложил в своем комментарии. Благодаря! – user2915962

+0

приветствуется :), я уже упомянул об этом в своем ответе как «Грант Винни». –

1

Если вам нужно, чтобы они были как отдельные поля, выбора нет, если не нравится через отражение.

пример:

var fields = YOUR_TYPE.GetType(). 
    GetFields(BindingFlags.Instance | BindingFlags.NonPublic). 
        Where(f=>f.Name.StartsWith("city")).ToList(); 

и после того, как:

for(var i=0; i<cities.Count; i++) { 
    fields[i].Set(....) //Set field value 
} 
1

Не совсем ответ, но ...

Как прокомментировал @Sayse, я тоже не понимаю причину наличия этих переменных

string city1, city2, city3, city4; 

Если вы не планируете для изменения cityX, то вы можете получить доступ к исходным значениям списка, используя индекс на месте, где у вас были намерения использовать переменные (city1 == cities[1], city2 == ..2, 3 = 3, вы видите?).

Если ваши переменные будут изменены, но только, чтобы иметь другое значение из списка, а затем просто хранить индексы и изменения индексов.

В противном случае (если вы планируете свободно изменять значения), организуйте их как массив или список, чтобы быть чем-то, что также работает с индексами. Затем вы можете сохранить при инициализации, используя цикл (for, while, linq и т. Д.):

var city = new string[cities.Count]; 
for(int i = 0; i < cities.Count; i++) 
    city[i] = cities[i]; 

вместо

string city1 = cities[0]; 
string city2 = cities[2]; 
... 
string city112312315654654 = cities[112312315654654]; 
+0

Как вы и @Sayse предлагает, вероятно, правда в большинстве случаев, я пытался «упростить» мой вопрос перед публикацией, чтобы сделать его более широким. Я обновил свой вопрос, где я также дал краткое описание моей «реальной» проблемы. Спасибо! – user2915962

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