您好我需要从字典中为集合分配值。我的示例代码在
下面public student
{
public string Name { get; set;}
public int Age { get; set;}
public string Address { get; set;}
}
我的词典集是
Dictionary<string, Int16> StudentList= new Dictionary<string, Int16>();
StudentList.Add("Mahesh Chand", 35);
StudentList.Add("Mike Gold", 25);
StudentList.Add("Praveen Kumar", 29);
StudentList.Add("Raj Beniwal", 21);
StudentList.Add("Dinesh Beniwal", 84);
现在我的学生集合将仅重视姓名列表现在我需要使用linq将年龄分配给基于集合的密钥名称而不用foreach
,是否可以在c#中使用?
答案 0 :(得分:4)
您可以选择所有KeyValuePair<string, int>
,然后您可以初始化每个学生:
List<Student> students = AuthorList
.Select(kv = > new Student{ Name = kv.Key, Age = kv.Value })
.ToList();
<强>更新强>:
我想在学生收集中插入年龄取决于学生 名称,为此我使用Name - Age字典集合作为 查找,是否清楚?
然后你需要某种循环,请注意LINQ
中的Q代表查询。它不是更新集合的正确工具。
但是,您可以使用Enumerable.Join
高效地将两个集合与LINQ链接,以准备foreach
:
List<Student> allStudents = getYourStudents();
// link all known students in the name-age-dictionary with this collection:
var studentInfos = from s in allStudents
join sa in StudentList.Keys
on s.Name equals sa
select new { Student = s, Age = StudentList[sa] };
foreach (var s in studentInfos)
s.Student.Age = s.Age;
答案 1 :(得分:1)
var collection = dictionary.SelectMany(v => v.Value);