假设一个对象如:
class A {
string Country;
string Region;
}
Run Code Online (Sandbox Code Playgroud)
并且IEnumerable<A>如:
"Denmark", "Arhus"
"Denmark", "Bornholm"
"Denmark", "Frederiksborg"
"Denmark", "Fyn"
"Denmark", "Copenhagen"
"Denmark", "Nordjylland"
"France", "Alsace"
"France", "Aquitaine"
"France", "Auvergne"
"France", "Basse-Normandie"
"France", "Bourgogne"
"France", "Bretagne"
"France", "Centre"
"France", "Champagne-Ardenne"
"France", "Corse"
etc...
Run Code Online (Sandbox Code Playgroud)
如何获得IDictionary<string, IEnumerable<string>> resLinq哪里res['Country']可以返回IEnumerable<string>相应的区域?
ToLookup 应该准确地给你你想要的东西.
var lookup = data.ToLookup(a => a.Country, a=> a.Region);
Run Code Online (Sandbox Code Playgroud)
从技术上讲,它是不可变的,因此没有实现IDictionary.如果您必须实现该接口,那么您需要将查找转换为字典:
var dictionary = lookup.ToDictionary(group => group.Key,
group => group.AsEnumerable());
Run Code Online (Sandbox Code Playgroud)