我正在嘗試對 s 集合創建搜索Organisation(我正在使用 LINQ to Entities)。public class Organisation{ public string OrgName { get; set; } public string ContactName { get; set; } public string OverviewOfServices { get; set; } public string Address1 { get; set; } public string Town { get; set; } public string PostCode { get; set; } public string Keywords { get; set; }}用戶輸入一些關鍵字,然后我想返回上面任何字段中存在所有關鍵字的所有Organisations 。Organisation// 1. Remove special characters and create an array of keywordsstring[] Keywords = CleanKeyWordString(model.keyword)// 2 . Get organisationsorglist = _UoW.OrganisationRepo.All();(OrganisationRepo.All返回一個IQueryableof Organisation。在此之前還有關于搜索的進一步查詢)// 3. Filter results by keywordsorglist = (from org in orglist where Keywords.All(s => org.OrgName.ToLower().Contains(s) || org.OverviewOfServices.ToLower().Contains(s) || org.ContactName.Contains(s) || org.Address1.ToLower().Contains(s) || org.Town.ToLower().Contains(s) || org.PostCode.ToLower().Contains(s) || org.Keywords.ToLower().Contains(s)) orderby searchTerms.Any(s => org.OrgName.ToLower().Contains(s)) ? 1 : 2 select org);這會返回所需的結果,但是,我現在想對它們進行排序,以便首先對標題中包含關鍵字的記錄進行排序,然后對其余的進行排序。如果不向結果添加某種排名算法,這可能嗎?
1 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
var withRank = orglist
.Select(o =>
new {
Org = o,
Rank = o.OrgName.ToLower().Contains(s)
});
var orderedOrgList = withRank
.OrderBy(o => o.Rank)
.Select(o => o.Org);
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消