重複の可能性:
LINQ C# による単語の出現によるリストの並べ替え
ここに同様の質問を投稿しましたが、うまくいかない回答がありました。これが私がソートする必要があるデータです。
ID Title
--- ------
1 JCB Excavator - ECU P/N: 728/35700
2 Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899
3 Geo Prism 1995 - Geo ABS #16213899
4 Geo Prism 1995 - ABS #16213899
5 Wie man BBA reman erreicht
6 this JCB test JCB
7 Ersatz Airbags, Gurtstrammer und Auto Körper Teile
私の検索データは「JCB GEO」のようなものです。データが次のようになるように並べ替えたい
ID Title
--- ------
2 Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899
3 Geo Prism 1995 - Geo ABS #16213899
4 Geo Prism 1995 - ABS #16213899
6 this JCB test JCB
1 JCB Excavator - ECU P/N: 728/35700
5 Wie man BBA reman erreicht
7 Ersatz Airbags, Gurtstrammer und Auto Körper Teile
最初に来る行は、データの時間が最大の行です。したがって、GEOの場合、ほとんどの行でワードの時間が最大になります。ID 2 には最大時間、GEO という単語があり、次の行には 2 つの Geo 単語があります...
私はこの質問を投稿し、以下の回答を得たと言いましたが、うまくいきません。
List<SearchResult> list = new List<SearchResult>() {
new SearchResult { Description = "JCB Excavator - ECU P/N: 728/35700" },
new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
new SearchResult { Description = "Wie man BBA reman erreicht" },
new SearchResult { Description = "this test JCB" },
new SearchResult { Description = "Ersatz Airbags, Gurtstrammer und Auto Körper Teile" }
};
var wordsToFind = "Geo JCB".Split();
var values = list.Select(x => new { SearchResult = x, Count = x.Description.Split(' ')
.Where(c => wordsToFind .Contains(c)).Count() })
.OrderByDesending(x => x.Count)
.Select(x => x.SearchResult);