我在下面有一段代码,它遍历每个标题字段,名字和姓氏,并将它们放入列表中:
public List<string> GetPassengerNames()
{
List<string> titleList = new List<string>();
List<string> forenameList = new List<string>();
List<string> surnameList = new List<string>();
List<string> fullNameList = new List<string>();
var passengerTitles = _driver.FindElements(PassengerDetailsElements.TitleField);
var passengerForenames =_driver.FindElements(PassengerDetailsElements.ForenameField);
var passengerSurnames = _driver.FindElements(PassengerDetailsElements.SurnameField);
foreach (var passengerTitle in passengerTitles)
{
SelectElement passengerTitleSelected = new SelectElement(passengerTitle);
string passengerTitleText = passengerTitleSelected.SelectedOption.Text;
titleList.Add(passengerTitleText);
}
foreach (var passengerForename in passengerForenames)
{
forenameList.Add(passengerForename.GetAttribute("value"));
}
foreach (var passengerSurname in passengerSurnames)
{
surnameList.Add(passengerSurname.GetAttribute("value"));
}
}
这将为两位乘客返回以下内容:
titleList Count=2
[0] "Mr"
[1] "Miss"
forenameList Count=1
[0] "Test"
[1] "Tester"
surnameList Count=1
[0] "Testette"
[1] "Testing"
现在我想在上面再添加一个方法,我想要做的是根据索引将标题,名字和姓氏连接在一起。我对下面的内容感到厌倦,但它已经失败,并希望得到帮助:
foreach (var passengerFullName in passengerTitles.Concat(passengerForenames).Concat(passengerSurnames))
{
fullNameList.Add(passengerFullName.Text);
}
return fullNameList;
所以我需要的输出是:
fullNameList Count = 2
[0] "Mr Test Testette"
[1] "Miss Tester Testing"
答案 0 :(得分:2)
Enumerable.Zip可以帮助您实现这一目标:
List<string> title = new List<string> { "Mr", "Miss" };
List<string> surname = new List<string> { "Test", "Tester" };
List<string> lastname = new List<string> { "Testette", "Testing" };
List<string> combined = title.Zip(
surname.Zip(lastname, (first, second) => first + " " + second),
(first, second) => first + " " + second).ToList();
方法
将指定的函数应用于两个序列的相应元素,生成一系列结果。
因此,在您的情况下,您将首先将名称融合在一起,然后将结果集合与title
列表中的元素结合使用" "
空格作为分隔符。