【问题标题】:Select a dictionary with certain properties of a class选择具有类的某些属性的字典
【发布时间】:2021-11-12 18:49:11
【问题描述】:

我有一个学生类如下:

public class Student
{
    public string Name { get; set; }
    public int? Age { get; set; }
    public bool? IsMale { get; set; }
}

并列出将学生分配为字典的课程列表,其中所有课程都存储为:

Dictionary<string, List<Student>>

其中 Key (string) 是课程代码,Value (List) 是注册到该特定课程的学生,所有属性都具有价值。

现在我想简化只有学生姓名的数据集。所以我仍然会有一个Dictionary&lt;string, List&lt;Student&gt;&gt;,其中只为每个Student 对象设置Name 属性。

如何编写这样的 LINQ 查询来获取我需要的数据?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    由于字典实现了IEnumerable&lt;KeyValuePair&lt;string, List&lt;Student&gt;&gt;&gt;,所以可以写

    var newDict = oldDict
        .ToDictionary(
            kvp => kvp.Key,
            kvp => kvp.Value.Select(s => new Student { Name = s.Name }).ToList()
        );
    

    请注意,我们有一个基于学生列表的嵌套 LINQ 查询。它选择列表中的所有学生并创建新学生,仅将名称设置到新列表中。

    因此,对于每个 KeyValuePair,我们保留 Key(课程代码),但创建一个新的 Value 作为简化的学生列表。


    相反,您也可以使用

    创建Dictionary&lt;string, List&lt;string&gt;&gt;
    var newDict = oldDict
        .ToDictionary(
            kvp => kvp.Key,
            kvp => kvp.Value.Select(s => s.Name).ToList()
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-13
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多