如何根據linq數據的每一行中出現的字來排序列表?我從這裏得到了一個正在給出正確輸出的人的答案。下面是代碼:按列表行中列出的字的出現次數linq
void Main()
{
List<SearchResult> list = new List<SearchResult>() {
new SearchResult(){ID=1,Title="Geo Prism GEO 1995 GEO* - ABS #16213899"},
new SearchResult(){ID=2,Title="Excavator JCB - ECU P/N: 728/35700"},
new SearchResult(){ID=3,Title="Geo Prism GEO 1995 - ABS #16213899"},
new SearchResult(){ID=4,Title="JCB Excavator JCB- ECU P/N: 728/35700"},
new SearchResult(){ID=5,Title="Geo Prism GEO,GEO 1995 - ABS #16213899 GEO"},
new SearchResult(){ID=6,Title="dog"},
};
var to_search = new[] { "Geo", "JCB" };
var result = from searchResult in list
let key_string = to_search.FirstOrDefault(ts => searchResult.Title.ToLower().Contains(ts.ToLower()))
group searchResult by key_string into Group
orderby Group.Count() descending
select Group;
result.ToList().Dump();
}
// Define other methods and classes here
public class SearchResult
{
public int ID { get; set; }
public string Title { get; set; }
}
我越來越喜歡
ID Title
-- ------
1 Geo Prism GEO 1995 GEO* - ABS #16213899
3 Geo Prism GEO 1995 - ABS #16213899
5 Geo Prism GEO,GEO 1995 - ABS #16213899 GEO
2 Excavator JCB - ECU P/N: 728/35700
4 JCB Excavator JCB- ECU P/N: 728/35700
6 dog
輸出上面的輸出就可以了。所有具有ord GEO的行都首先出現,因爲它在大多數行中發現最大時間意味着GEO字在3行中找到,而JCB在兩行中找到,因此接下來是JCB相關行。
我需要在整個數據上獲得上述輸出後再進行排序。那就是GEO行首先出現在哪個行的GEO字的最大時間。所以,我的輸出看起來象下面這樣:
ID Title
-- ------
5 Geo Prism GEO,GEO 1995 - ABS #16213899 GEO
1 Geo Prism GEO 1995 GEO* - ABS #16213899
3 Geo Prism GEO 1995 - ABS #16213899
4 JCB Excavator JCB- ECU P/N: 728/35700
2 Excavator JCB - ECU P/N: 728/35700
6 dog
我發現了一個LINQ查詢,其對一個詞的出現在字符串:
string text = @"Historically, the world of data and data the world of objects data" ;
string searchTerm = "data";
//Convert the string into an array of words
string[] source = text.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries);
var matchQuery = from word in source
where word.ToLowerInvariant() == searchTerm.ToLowerInvariant()
select word;
int wordCount = matchQuery.Count();
我從this url
得到它我怎麼能使用上面的代碼來排序我的標題?如何使用第二個排序計數在標題字段中單詞的出現,結果我的輸出看起來像:
ID Title
-- ------
5 Geo Prism GEO,GEO 1995 - ABS #16213899 GEO
1 Geo Prism GEO 1995 GEO* - ABS #16213899
3 Geo Prism GEO 1995 - ABS #16213899
4 JCB Excavator JCB- ECU P/N: 728/35700
2 Excavator JCB - ECU P/N: 728/35700
6 dog
我的優先搜索條件編輯解決了嗎? – James 2012-07-09 20:29:26