Я хочу выполнить поиск в базе данных пользователей и заказать мои результаты в соответствии с тем, насколько точна совпадение. В качестве примера должны быть указаны точные совпадения имени пользователя в результатах перед однословным совпадением.Объедините результаты нескольких запросов с одним запросом
Это то, что я есть (переменная «значение» содержит слово для поиска и «запрос» содержит начальный запрашиваемых я хочу изменить)
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 и получить новый запрос, который я могу передать. Я также хочу, чтобы сохранить порядок моих запросов, и, честно говоря, я понятия не имею, как идти об этом ..
Вы можете попробовать контактировать результаты. Я не уверен, сохранился ли заказ. var qAll = q1.Concat (q1) .Concat (q2) .Concat (q3) .Concat (q4); Было бы интересно посмотреть, работает ли оно так, как ожидалось. Вы могли бы добавить дополнительный столбец упорядочения для каждого запроса, чтобы иметь что-то по порядку. –
@SilasHansen Спасибо, я попробую и посмотрю, как это работает – Toodleey
@SilasHansen, похоже, работает нормально, конкретизировал все вместе и сделал отличный результат. не уверен в заказе, так как выясняется, что запрос будет переупорядочен позже. – Toodleey