私の要件によると、このサイトからlinqクエリを取得できますが、すべてをlinqパッドに貼り付けるとエラーが発生します。ここに、 「名前'grp'は現在のコンテキストに存在しません」のようなエラーメッセージが表示される完全なlinqクエリを貼り付けます。
void Main()
{
List<SearchResult> list = new List<SearchResult>() {
new SearchResult(){ID=4,Title="Wie man BBA reman erreicht"},
new SearchResult(){ID=5,Title="Ersatz Airbags, Gurtstrammer und Auto Körper Teile "},
new SearchResult(){ID=6,Title="JCB Excavator - ECU P/N: 728/35700"},
new SearchResult(){ID=2,Title="Geo Prism 1995 GEO - ABS #16213899"},
new SearchResult(){ID=3,Title="Geo Prism 1995 - ABS #16213899"},
new SearchResult(){ID=1,Title="Geo Prism 1995 GEO GEO- ABS #16213899"},
};
var to_search = new[] { "Geo", "JCB" };
var result = (from searchResult in list
let title = searchResult.Title.ToLower()
let key_string = to_search.FirstOrDefault(ts => title.Contains(ts))
orderby key_string == null ? -1 : title.Split(new[] { key_string }, StringSplitOptions.None).Length descending
group searchResult by key_string into Group
select Group).OrderByDescending(grp => grp.Count()).ThenByDescending(CountStringOccurrences(**grp.Key**, to_search));
}
public int CountStringOccurrences(string text, string[] pattern)
{
// Loop through all instances of the string 'text'.
int count = 0;
foreach (string itm in pattern)
{
int i = 0;
while ((i = text.IndexOf(itm, i)) != -1)
{
i += itm.Length;
count++;
}
}
return count;
}
public class SearchResult{
public int ID { get; set; }
public string Title { get; set; }
}
太字の領域はエラーをスローしています。ありがとうplzz見てください。