.OrderBy (p => новый список (p.Keywords.Split ('')).
Ну, сообщение совершенно ясно. Строка.Split () нельзя перевести на SQL.
Нет действительно хорошего способа сделать это в одном операторе Linq-to-Sql. Я бы предложил вытащить данные с помощью L2S, поместить их вПеречислите <>, а затем отсортируйте их там.
var jobs = from p in _dataContext.Jobs
select new
{
p.Title,
p.IsFullTIme,
p.Location,
p.Category,
p.Url,
p.Id,
p.Keywords
}
return Json(job.ToList()
.OrderBy(p=>p.Keywords.Split(' ').Where(n=>k.Contains(n)).Count()),
JsonRequestBehavior.AllowGet);
Однако ваша реальная проблема заключается в том, что у вас действительно плохой дизайн. В правильной третьей нормальной форме будет таблица JobKeywords (int JobId, varchar Keyword)с одной строкой для каждого ключевого слова для работы. Тогда вы можете сделать это одним оператором sql:
return Json(from p in _dataContext.Jobs
order by p.Keywords.Intersect(k).Count()
select new { p.Title, p.IsFullTime, p.Location,
p.Category, p.Url, p.Id },
JsonRequestBehavior.AllowGet);