Bea*_*ood 4 .net c# linq dictionary
public class Person
{
public string Email {get; set;}
public string Name {get; set;}
}
public Report : Dictionary<string, string>
{
public Report()
{
List<Person> list = getData(); // filled with Person's
var realList = list.Where(x => x.Name != "test");
foreach( var i in realList)
{
this.Add(i.Email,i.Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图简化我的代码以解决问题.基本上我有一个人员列表,我想得到一个子列表,然后对于子列表中的每个元素,我想将它添加到这个类的字典中.
我的问题:有没有办法摆脱那个foreach语句,并在上面的linq语句中实现相同的效果.因为看一次然后再通过子列表对我来说似乎很愚蠢.那么如果在linq语句中如果x.Name不等于test那么它会将它添加到字典中会有什么好处.
Ree*_*sey 16
我的问题:有没有办法摆脱那个foreach语句,并在上面的linq语句中实现相同的效果.因为我两次查看清单似乎很愚蠢
您没有在代码中两次浏览列表 - 列表仅枚举一次,因为LINQ使用延迟执行.这可能是实现这一目标的最佳方式.
但是,如果您没有对字典进行子类化,而是封装了一个字典,则可以使用ToDictionary创建封装字典:
List<Person> list = getData(); // filled with Person's
Dictionary<string,string> people = list
.Where(x => x.Name != "test")
.ToDictionary(x => x.Email, x => x.Name);
Run Code Online (Sandbox Code Playgroud)