By default, the query will return all columns in the table. This can be changed by supplying a comma delimited list of columns to the SelectList property.
query.SelectList = Product.Columns.ProductName + ", " + Product.Columns.SupplierID;
The query will also return all rows in the table. This can be changed several ways, the easiest of which is the Top property, which can be set to return only the given number of rows.
query.Top = "10";
(I'm not sure the reasoning, but this value needs to be a string instead of an integer.)
Filtering by a date range is possible with the AddBetweenAnd method which takes a column name, start date, and end date. This method can be called multiple times to limit by more than one column.
query.AddBetweenAnd(Order.Columns.OrderDate, new DateTime(1980, 1, 1), DateTime.Now);
Or you can do the same thing with non-date values using AddBetweenValues.
query.AddBetweenValues(Product.Columns.ProductName, "A", "F");
The final and most powerful method is AddWhere. Like the AddBetween methods it can be called multiple times to create a complete WHERE clause. AddWhere has several different constructors, the simplest of which takes a column name and matching value.
You can also supply a Comparison instead of doing an exact match. (The complete comparison possibilities are Blank, Equals, GreaterOrEquals, GreaterThan, LessOrEquals, LessThan, Like, NotEquals, and NotLike.)
query.AddWhere(Product.Columns.SupplierID, SubSonic.Comparison.GreaterThan, 2);
SubSonic also supports the concept of paging data by setting the PageSize and PageIndex properties.
query.PageIndex = 2;
query.PageSize = 5;
Find the entire series of posts here.