如何将列表转换为字符串?

时间:2017-11-07 11:35:05

标签: c# selenium

我有一个显示乘客头衔的清单:

public List<string> GetPassengerNames()
{
    List<string> titleList = new List<string>();

    var passengerTitles =  _driver.FindElements(PassengerDetailsElements.TitleField);

    foreach (var passengerTitle in passengerTitles)
    {
        SelectElement passengerTitleSelected = new SelectElement(passengerTitle);
        string passengerTitleText = passengerTitleSelected.SelectedOption.Text;
        titleList.Add(passengerTitleText);

    }

    return titleList;
}

然后我将其添加到场景上下文中:

[When(@"all passenger details are captured")]
public void WhenAllPassengerDetailsAreCaptured()
{
    var passengersList = _passengerDetails.GetPassengerNames();
    ScenarioContext.Current.Add("PassengersList", passengersList);
}

当我抓住这个上下文但我不知道如何为列表元素执行此操作时,我想要抓住每位乘客的文本。

我尝试了以下内容:

string passengersList = ScenarioContext.Current["PassengersList"].ToString().Select(c => c.Text()).ToArray();

为了从列表中获取每个值的文本并存储在数组中,上面的代码应该是什么?

3 个答案:

答案 0 :(得分:1)

你可以使用字符串连接。我没有在visual studio中检查过这个,但它应该可以工作。

var passengersList = string.Join(", ", _passengerDetails.GetPassengerNames());

答案 1 :(得分:0)

试试此代码

var resultString = string.Join(",", passengersList);

答案 2 :(得分:0)

用于将列表添加到会话的代码是正确的,如果要从会话中检索相同的代码,则意味着必须使用以下行,而不是保存为连接字符串,检索它们并拆分为得到价值。试试这个:

var passengerList = (List<string>)ScenarioContext.Current["PassengersList"];
// If you want them as a comma separated values then
string csvPassengerList = String.Join(",",passengerList);

请注意:[Reference]

  

会话变量可以是任何有效的.NET Framework类型。价值   会话变量返回时必须转换为适当的类型   你从SessionStateItemCollection中检索它。