说我有以下内容
var searches = new ObservableCollection<Book>();
Run Code Online (Sandbox Code Playgroud)
searches 包含书籍对象
public class Book
{
public string Title { get; set;}
public string Desc {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我想searches按匹配的字符串排序.首先,它Title根据搜索字符串从一开始的接近程度来检查排名Title.接下来,它检查Desc并根据搜索字符串从描述的开头出现的距离进行排序.
例如,如果我有
第1册
标题:ABC书名
说明:书1的描述第2册
标题:书名仅
描述:第2 册的描述中有一个ABC书3
标题:书名ABC
描述:ABC在开头
所以,请说搜索关键字是ABC,我想要searches排序,以便我得到以下内容.结果为包含标题中的搜索字符串的项目提供了更高的优先级.
第1册
标题:ABC书名
说明:书1的描述书3
标题:书名ABC
描述:ABC在开头第2册
标题:书名仅
描述:第2 册的描述中有一个ABC
如何使用LINQ实现这一目标?
考虑以下代码:
class Results
{
public int playerId;
public int score;
public int section;
public int position;
public Results(int _playerId, int _score, int _section)
{
playerId = _playerId;
score = _score;
section = _section;
}
}
public void RankMyResults()
{
List<Results> myResultList = new List<Results>();
myResultList.Add(new Results(1,232, 1));
myResultList.Add(new Results(2,213, 1));
// Add a lot of more results
// Iteriate over the items to set the position
}
Run Code Online (Sandbox Code Playgroud)
我想将位置1设置为每个部分中的最高分,将位置2设置为第二个最高分,依此类推.
此外,如果两个人的得分相同,那么这些职位应该是这样的
Position Score PlayerId Section
1 135 23 1
1 135 43 …Run Code Online (Sandbox Code Playgroud)