如何根据索引

时间:2017-11-06 15:28:56

标签: c# selenium

我在下面有一段代码,它遍历每个标题字段,名字和姓氏,并将它们放入列表中:

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"

1 个答案:

答案 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列表中的元素结合使用" "空格作为分隔符。

相关问题