가능한 중복은 :
Sort List by occurrence of a word by 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);
입니다
그 그 대답을 받아 들일 수 없으며, 당신의 질문에 적극적으로 참여하는 사람들과 대화하여 일하는 답을 얻습니다. 여러 개의 동일한 질문으로 사이트를 오염시키는 것은 갈 길이 아닙니다. – Jon
[원래 질문에 대한 업데이트 된 답변보기] (http://stackoverflow.com/a/11392150/219661) – Jamiec