我收到航空公司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;
答案 0 :(得分:2)
使用Linq IEnumerable
将object 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 /数组。
谢谢