Currently result is a collection of an anonymous type, you want it to return you a Category instead.
NorthwindDataContext db = new NorthwindDataContext();
List<Category> oList = new List<Category>();
var result = from p in db.Categories
select new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName };
You can then add your Categories to oList -
oList.AddRange(result.ToList());
EDIT:
Ok, given that you only want to get a few fields from the database, create a new type with only those fields (if you don't need to use it outside your method, you won't have to do this, just leave it as an anonymous type) -
class CategorySml
{
public int CategoryID {get; set;}
public string CategoryName {get; set;}
}
...
NorthwindDataContext db = new NorthwindDataContext();
List<CategorySml> oList = new List<Category>();
var result = from p in db.Categories
select new CategorySml { CategoryID = p.CategoryID, CategoryName=p.CategoryName };