从嵌套数组中获取字段

时间:2013-02-21 07:14:33

标签: c# asp.net web-services

我收到航空公司webservice在此变量BookingDetailsEmailRS[] bookingDetailsEmailRS中的回复。

我想在嵌套数组中获取Travelers字段。
在我的网格视图Travellers Name列中填写此字段。

protected void Button1_Click(object sender, EventArgs e)
{
    GatewayBookingClient b = new GatewayBookingClient();

    string emailid = "mshrivastava@fareportal.com";

    string errorCode = string.Empty;
    string errorAtNode = string.Empty;

    SoapAuthentication soap = new SoapAuthentication();
    soap.UserName = "peter@mobissimo.com";
    soap.Password = "mob1ss1mo1947";
    BookingDetailsEmailRS[] bookingDetailsEmailRS = b.GetBookingDetails(soap, emailid, out  errorCode, out  errorAtNode);

    for (int i = 0; i < bookingDetailsEmailRS.Length - 1; i++)
    {
        GridView1.DataSource = bookingDetailsEmailRS;
        GridView1.DataBind();
    }  
}

我成功从数组中获取了值,但另一个问题是我想在网格的“TravellerName”列中绑定name变量的每个值。 “TravellerName”列在网格中创建了我自己的列。

    string name = bookingDetailsEmailRS[i].Travelers[0].FirstName +  
    bookingDetailsEmailRS[i].Travelers[0].MiddleName +  
    bookingDetailsEmailRS[i].Travelers[0].LastName;

2 个答案:

答案 0 :(得分:2)

使用Linq IEnumerableobject array中的值分配给GridView,如下所示.....

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>obj.Travelers).Select(x=>x.FirstName+x.MiddleName+x.LastName).ToList();

如果您在bookingDetailsEmailRS中只获得一个Travelers,那么您可以直接编写如下...

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>obj.Travelers[0].FirstName+obj.Travelers[0].MiddleName+obj.Travelers[0].LastName)).ToList();

编辑: - 如果您希望所有列与上面的列连接,请尝试按照...

GridView1.DataSource = bookingDetailsEmailRS.Select(obj=>new {
    Username =obj.Travelers[0].FirstName+obj.Travelers[0].MiddleName+obj.Travelers[0].LastName,
    obj.property1,
    obj.property2
}).TolIst();

答案 1 :(得分:0)

您可以实现代码

string name = bookingDetailsEmailRS[i].Travelers[0].FirstName + bookingDetailsEmailRS[i].Travelers[0].MiddleName + bookingDetailsEmailRS[i].Travelers[0].LastName;

从服务返回数据集。在这种情况下,您希望返回数据集而不是列表,数组。

如果您要返回列表,则可以通过

获取代码
string name = bookingDetailsEmailRS[i].FirstName + bookingDetailsEmailRS[i].MiddleName + bookingDetailsEmailRS[i].LastName;

因为bookingDetailsEmailRS []是BookingDetailsEmailRS类的List /数组。

谢谢