如何获取字符串数组中对象列表的特定字段

时间:2012-10-01 11:47:24

标签: c# asp.net linq list arrays

我有一份这样的人员名单:

foreach (GridViewRow r in gv_contactList.Rows)
                        {
                            Person p = new Person();
                            p.Id = int.Parse(gv_contactList.DataKeys[r.RowIndex].Value.ToString());
                            p.Name = r.Cells[1].Text.TrimEnd();
                            p.Mobile = r.Cells[2].Text.TrimEnd();
                            p.Email = r.Cells[3].Text.TrimEnd();
                            p.Pkind = 1;//ToDo
                            plst.Add(p);

                        }

如何在string[]中获取一系列手机号码 在相同的上一个循环中,移动号码不为空或空。 而不是在人员列表中再次循环以将移动号码放入阵列中。

4 个答案:

答案 0 :(得分:2)

var mobiles = new List<string>();

foreach (GridViewRow r in gv_contactList.Rows) 
{ 
    ...
    p.Mobile = r.Cells[2].Text.TrimEnd(); 
    if (!String.IsNullOrEmpty(p.Mobile)) {
        mobiles.Add(p.Mobile);
    }
    ... 
} 

var mobilesArray = mobiles.ToArray();

答案 1 :(得分:2)

不确定你想要什么。但是,如果您想要人员列表plst中的一系列字符串电话号码,您可以这样做:

string[] phoneArray = plist
                          .Where(r=>string.IsNullOrWhiteSpace(r.Mobile))
                          .Select(r=>r.Mobile.ToString())
                          .ToArray();

答案 2 :(得分:1)

ArrayList之前声明foreach

ArrayList<String> mobNums = new ArrayList<String>();

foreach内添加手机号码。它:

mobNums.Add(p.Mobile);

foreach将其更改为Array:

String[] arr = mobNums.ToArray();

答案 3 :(得分:1)

假设plst已存在:

var plst = ...

var persons = from GridViewRow r in gv_contactList.Rows
              select new Person {
                Id = int.Parse(gv_contactList.DataKeys[r.RowIndex].Value.ToString()),
                Name = r.Cells[1].Text.TrimEnd(),
                Mobile = r.Cells[2].Text.TrimEnd(),
                Email = r.Cells[3].Text.TrimEnd(),
                Pkind = 1,
              };

var mobiles = persons.Aggregate(new List<string>(), (acc, cur) => 
              {
                plst.Add(cur);

                if (!string.IsNullOrEmpty(cur.Mobile))
                    acc.Add(cur.Mobile);
                return acc;
              }).ToArray();

枚举只发生一次。