c# – 对集合进行排序,并根据某些标准排列结果
说我有以下
var searches = new ObservableCollection<Book>(); 搜索包含书籍对象 public class Book { public string Title { get; set;} public string Desc {get; set;} } 我想通过匹配的字符串对搜索进行排序.首先,它根据标题开头的搜索字符串的距离,对标题进行排序.接下来,它检查Desc,并按照“Desc”开头的搜索字符串的出现距离进行排序. 例如,如果我有
所以让我们说搜索关键字是ABC,我希望搜索被排序,以便我得到以下内容.结果将标题中包含搜索字符串的项目的优先级更高.
如何使用LINQ实现这一点? 解决方法
您可以使用排名函数为每本书定义“分数”,然后按分数排序.
即 var searchString = "ABC"; var results = books.Select(b => new { Book = b,Rank = RankBook(b,searchString) }) .OrderBy(r => r.Rank) .Select(r => r.Book.Title); 而排名功能: private int RankBook(Book b,string searchString) { int rank = 0; if (b.Title.Contains(searchString)) rank += 10; if (b.Desc.Contains(searchString)) rank += 5; return rank; } 这就是说:发现在title = 10点,发现在desc = 5分,所以你得到更高分数的最相关的书. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |