why this line:
var category = _dataContext.Categories.Where(p => p.Keywords.Split(\' \').Contains(context.Request.QueryStrin
string.split is not supported in LINQ-to-SQL.
There's an easy fix. Select all the data and do the filtering in the client. This may not be very efficient depending on the number of categories.
var category =
_dataContext.Categories.ToList()
.Where(p => p.Keywords.Split(' ').Contains(context.Request.QueryString["q"])).First();
Calling .ToList() will force enumeration of all the categories from your datasource, and the subsequent operations will be performed in the client code.