从列表中获取值并分配给新属性

时间:2014-07-08 11:51:05

标签: c# list

假设我得到了这样的字符串列表:

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

有没有一种好方法以某种方式遍历列表并从列表中为每个var分配一个城市?我正在寻找一种方法来挑选&#34;列表中的值并将其分配给新字符串。

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>

由于所有的li元素都有不同的样式,因此我不能通过hrefs列表循环使用,我不知道如何在不将我的hrefs分配给单个变量的情况下进行编织...希望我足够清楚......

3 个答案:

答案 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 :(得分:1)

不是真的答案,但是......

正如@Sayse评论的那样,我也不了解拥有这些变量的原因

string city1, city2, city3, city4;

如果您不打算更改cityX,那么您可以使用 index 来访问原始列表值,而您有意使用变量({{1} },city1 == cities[1]city2 == ..2,你知道吗?)。

如果您的变量将被更改,但只有列表中的其他值,则只需存储索引并更改索引。

否则(如果您打算自由更改值),将它们组织为数组或列表,作为某些内容,也可以使用索引进行操作。然后,您可以使用周期(3 = 3for linq 等)保存进行初始化。

while

而不是

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

答案 2 :(得分:0)

为什么不按照&#34; Grant Winney&#34;所建议的那样做。最简单的方法,除非你在列表和固定数量的字符串中有固定的条目。

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