public class User
{
public string name { get; set; }
public string login { get; set; }
public string company { get; set; }
}
如何将List<User>
转换为ToDictionary<string, List<string>>
其中key:company
value:names。
我尝试这样做
List<User> users = context.getallUsers();
var usersByCompany = users .ToDictionary<string, List<string>>(u => u.company, users.Where(d=>d.company==u.company).Select(c=>c.name).ToList());
答案 0 :(得分:3)
首先按公司分组用户,然后将组转换为字典:
users.GroupBy(u => u.company)
.ToDictionary(g => g.Key,
g => g.Select(u => u.name).ToList());
注意:字典的类型将从使用中推断出来。
您也可以考虑使用ILookup<string, string>
代替Dictionary<string, List<string>>
:
users.ToLookup(u => u.company, u => u.name)
答案 1 :(得分:1)
您可能希望使用ToLookup
方法:
ILookup<string, User> usersLookup = users.ToLookup(u => u.company);
usersLookup
可由company
foreach (User u in userLookup["IBM"]) {...} //IBM users
如果您仍需要公司名称对,请尝试以下操作:
ILookup<string, string> usersLookup = users.ToLookup(u => u.company, u => u.name);