I was wondering if we retrieve a dataset in C# from SQL database .then can we query on it
Not sure if this is what you're looking for buy, you can query on the datatables in the dataset using Select() and you get an array of DataRows
dataSet.Tables["myTable"].Select("Id=55")
You can use DataView.RowFilter
property, which provides a fairly simplistic query language, or you can use LINQ to DataSet in .NET 3.5+.
Not out of the box, but check out QueryADataSet. You can also use Compute and Select on a DataTable.
You can do that easily with LINQ if you are using .NET 3.5 or greater.
Before doing so I would make sure that you are doing everything you can related to selecting your datasets on the database side.
Ask yourself if you really need to do this in your application, or if it can live on the database side (as a view, a stored procedure, etc.).
By keeping your query logic on the database side, you keep it where it belongs and will be executed most efficiently.
Also, by letting the database do all of your query work you allow your application(s) to be more scaleable because the database will almost always be easier and more efficient to parallelize and scale than your application itself.