我有一份这样的人员名单:
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[]
中获取一系列手机号码
在相同的上一个循环中,移动号码不为空或空。
而不是在人员列表中再次循环以将移动号码放入阵列中。
答案 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();
枚举只发生一次。