我想搜索用户数据库并根据匹配的精确程度对结果进行排序。例如,用户名的精确匹配应出现在单个单词匹配之前的结果中。
这就是我所拥有的(变量“值”包含一个搜索词,“查询”包含一个我想修改的初始可查询)
var values = value.Split(new [] {' ','\t', '\n', '\r'});
var q1 = query.Where(u => u.Id == valueAsInt || u.ExternalId == valueAsInt);
var q2 = query.Where(u => u.Name.Contains(value) || u.Username.Contains(value));
var q3 = query.Where(u => values.All(i => u.Name.Contains(i)) || values.All(i => u.Username.Contains(i)));
var q4 = query.Where(u => values.Any(i => u.Name.Contains(i)) || values.Any(i => u.Username.Contains(i)));
但是,我现在想将 q1 到 q4 的结果结合起来,并有一个可以传递的新可查询对象。我还想保留查询的顺序,坦率地说,我不知道该怎么做。