Introduction
To work with complex data, we generally use a dataset. We will create a web 
service and use a dataset in the web service application that returns records from a student table. 
There is a database "STUDENT" and a database table "student_detail". 
So, let's create a web service. 
Create an  ASP.NET Web Service Application and replace the code with the following code.
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Services;
 using System.Data.SqlClient;
 using System.Data;
  
 namespace WebService2
 {
     /// 
<summary>
     /// 
Summary description for Service1
     ///
</summary>
     [WebService(Namespace =
"http://tempuri.org/")]
     [WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
     [System.ComponentModel.ToolboxItem(false)]
     // To allow this Web Service to be called 
from script, using ASP.NET AJAX, uncomment the following line. 
     // 
[System.Web.Script.Services.ScriptService]
     public 
class Service1 : System.Web.Services.WebService
     {
         string connstring =
"Database=STUDENT;server=.;user=XXXX;password=XXXXXXXX";
         DataSet ds;
         DataView dv;
         SqlDataAdapter da;
         [WebMethod(Description=
"to show record")]
         public 
DataSet show()
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             ds = new
DataSet();
             da.Fill(ds);
             return ds;
         }       
     }
 }
 
Run the service application.
Output:
![working with complex data in webservice]()
Now we perform some more operatiosn. Now, I am creating a web service application 
which can search the records and filter the records in a different way. 
Again createa Web Service Application and replace the code with the following code.
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Services;
 using System.Data.SqlClient;
 using System.Data;
  
 namespace WebService2
 {
     /// 
<summary>
     /// 
Summary description for Service1
     ///
</summary>
     [WebService(Namespace =
"http://tempuri.org/")]
     [WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
     [System.ComponentModel.ToolboxItem(false)]
     // To allow this Web Service to be called 
from script, using ASP.NET AJAX, uncomment the following line. 
     // [System.Web.Script.Services.ScriptService]
     public 
class Service1 : System.Web.Services.WebService
     {
         string connstring = 
"Database=STUDENT;server=.;user=XXXX;password=XXXXXXXX";
         DataSet ds;
         DataView dv;
         SqlDataAdapter da;
         [WebMethod(Description=
"to show record")]
         public 
DataSet show()
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             ds = new
DataSet();
             da.Fill(ds);
             return ds;
         }
         [WebMethod(Description =
"simple filter")]
         public 
DataTable filter(string column)
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             DataSet ds =
new DataSet();
             da.Fill(ds);
             DataView dv =
new DataView(ds.Tables[0]);
             dv.RowFilter = "f_name like '"+column+"%' 
";
             return dv.ToTable();
         }
         [WebMethod(Description =
"advance sort")]
         public 
DataTable advancesort(string column,
string sort)
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             DataSet ds =
new DataSet();
             da.Fill(ds);
             DataView dv =
new DataView(ds.Tables[0]);
             dv.Sort = " "+column+" 
" + ""+sort+"";
             return dv.ToTable();
         }
         [WebMethod(Description =
"advancefilter")]
         public 
DataTable advancefilter(string column,
string value)
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             DataSet ds =
new DataSet();
             da.Fill(ds);
             DataView dv =
new DataView(ds.Tables[0]);
             dv.RowFilter = " "+column+" 
= '" + value + "' ";
             return dv.ToTable();
         }
         [WebMethod(Description="simple 
sorting")]
         public 
DataTable sort(string column)
         {
             da = new
SqlDataAdapter("select 
* from STUDENT_DETAIL", connstring);
             DataSet ds =
new DataSet();
             da.Fill(ds);
             DataView dv =
new DataView(ds.Tables[0]);
             dv.Sort =  " "+ column +" ";
             return dv.ToTable();
  
         }
     }
 }
 
Create a web application and consume the service. Arrange the UI 
controls the same as the below figure on the design page.
![working with complex data in webservice]()
Now write the following code on the .aspx.cs 
page.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
 
namespace WebApplication3
{
    public partial
class WebForm1 
: System.Web.UI.Page
    {
        protected void 
Page_Load(object sender,
EventArgs e)
        {
 
        }
       protected void 
btnshowfullrecord_Click(object sender,
EventArgs e)
        {
            localhost.Service1 obj=new 
localhost.Service1();
            DataSet ds = obj.show();
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
 
        protected void 
btnsort_Click(object sender,
EventArgs e)
        {
            if (txtvalue.Text ==
"")
            {
                lblerror.Text = "Plz, Enter Column 
name";
            }
            else
            {
                localhost.Service1 obj =
new localhost.Service1();
                GridView1.DataSource = obj.sort(txtcolumn1.Text);
                GridView1.DataBind();
            }
        }
         protected void 
btnadvancesort_Click(object sender,
EventArgs e)
        {
            if (txtcolumn2.Text ==
"" || txtascordesc.Text ==
"")
            {
                lblerror.Text = "Plz, Fill Both 
(Column anme and Asc/Desc ";
            }
            else
            {
                localhost.Service1 obj =
new localhost.Service1();
                GridView1.DataSource = obj.advancesort(txtcolumn2.Text, 
txtascordesc.Text);
                GridView1.DataBind();
            }
        }
 
        protected void 
advancefilter_Click(object sender,
EventArgs e)
        {
            localhost.Service1 obj =
new localhost.Service1();
            GridView1.DataSource = obj.advancefilter(txtcolumnfilter.Text, 
txtvaluefilter.Text);
            GridView1.DataBind();
        }
 
        protected void 
btnfilter_Click(object sender,
EventArgs e)
       {
           if (txtvalue.Text ==
"")
           {
 
           }
           else
           {
               localhost.Service1 obj =
new localhost.Service1();
               GridView1.DataSource = obj.filter(txtvalue.Text);
               GridView1.DataBind();
           }
       }
    }
}
Run the application.
Output:
![working with complex data in webservice]()
To show all records, Click the "Show Full Record" 
button. It will show all records of student.
Output:
![working with complex data in webservice]()
To sort all record saccording to a column name (in ascending order), write the 
column name in the textbox and click the "sort" button. 
Output:
![working with complex data in webservice]()
To sort  aspecified column value in ascending or descending order, write the 
column name and sorting order( Asc/Desc) and click the "sort" (second sort 
button) button.
Output:
![working with complex data in webservice]()
To search any record by the student name, you can write the full name or some 
characters of a name. It will show all records of the student table with the matching 
character. 
Output:
![working with complex data in webservice]()
To filter the records according to a specified column and column value, write 
the desired column name and column value and click the "filter" button. It will 
show the filtered records. Here I am filtering the record with "l_name"( column name) as "kumar"( column value).
Output:
![working with complex data in webservice]()