0

ユーザー データベースを検索し、一致の精度に応じて結果を並べ替えたいと考えています。たとえば、ユーザー名の完全一致は、単一の単語が一致する前に結果に表示される必要があります。

これは私が持っているものです(変数「値」には検索語が含まれ、「クエリ」には変更したい最初のクエリ可能なものが含まれます)

        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 までの結果を結合し、渡すことができる新しいクエリを作成したいと考えています。また、クエリの順序を保持したいのですが、率直に言って、これを行う方法がわかりません..

4

2 に答える 2