object (KS)
保持するがありますID and Title
(タイトルの一部として数字があります)。
私がやろうとしているのは、降順に並べ替えることだけです。オブジェクトには次のものがあります。
ID Title
1 1 Outlook VPN
2 2 Outlook Access
3 4 Access VBA
4 3 Excel Automation
したがって、タイトルで並べ替えると、次のようになります。
ID Title
3 4 Access VBA
4 3 Excel Automation
2 2 Outlook Access
1 1 Outlook VPN
ソートに使用しているコードは次のとおりです。
IEnumerable<KS> query = results.OrderByDescending(x => x.Title);
ただし、クエリにはまだオブジェクトが元の順序で含まれています!
欠落しているタイトルの先頭に数字があることと何か関係がありますか?
編集
わかりやすくするために、コントローラーからのコードを追加しました。
[HttpPost]
// [ValidateAntiForgeryToken]
// id is a string of words eg: "outlook access vpn"
// I split the words and want to check the Title to see how many words appear
// Then sort by the most words found
public JsonResult Lookup(string id)
{
List<string> listOfSearch = id.Split(' ').ToList();
var results = db.KS.Where(x => listOfSearch.Any(item => x.Title.Contains(item)));
// search each result, and count how many of the search words in id are found
// then add the count to the start of Title
foreach (KS result in results)
{
result.KSId = 0;
foreach (string li in listOfSearch)
{
if (result.Title.ToLower().Contains(li.ToLower()))
{
result.KSId += 1;
}
}
result.Title = result.KSId.ToString() + " " + result.Title;
}
// sort the results based on the Title - which has number of words at the start
IEnumerable<KS> query = results.OrderByDescending(x => x.Title).ToList();
return Json(query, JsonRequestBehavior.AllowGet);
}
以下は、タイトルが 1、2、1、1 の順序で表示されたクエリが入力された後のスクリーンショットです。
それが役立つ場合のオブジェクトのモデルは次のとおりです。
public class KS
{
public int KSId { get; set; }
public string KSSol { get; set; }
public string Title { get; set; }
public string Fix { get; set; }
}