c# - 具有变量值的字典对象的通用方法并循环遍历它
问题描述
我需要将存储在结果(模型)中的所有来自 api 的字典对象转换为 StudentList 类型。
我正在为一个属性做这件事,如下所示:
StudentList<StudentData> testList = new StudentList<StudentData>();
foreach(KeyValuePair<string, IEnumerable<StudentData>> pair in result.StudentDataDetails)
{
foreach(var x in pair.Value)
testList.Add(x);
}
像 StudentData 一样,还有其他类对象,例如 TeacherData、ParentData.. 所有这些都需要更改为 StudentList<TeacherData>, StudentList<ParentData>
.
我正在尝试为此构建一个通用方法。任何帮助将不胜感激。我需要通过以下方式检查结果中是否有字典属性,Dictionary<string, IEnumerable<T>>
然后如上所述更改字典。T 是 StudentData、TeacherData 等。泛型方法需要返回StudentList<T>.
谢谢
解决方案
您可以编写一个泛型方法,该方法接受类型字典并从所有值中<string, IEnumerable<T>>
返回 a 。List<T>
这适用于任何类型T
,无论是 a Student
、Teacher
、Parent
等:
public static List<T> GetAllValues<T>(Dictionary<string, IEnumerable<T>> input)
{
return input?.SelectMany(kvp => kvp.Value).ToList();
}
示例用法:
var studentDict = new Dictionary<string, IEnumerable<Student>>
{
{"1", new List<Student> {new Student {Name = "First"}}},
{"2", new List<Student> {new Student {Name = "Second"}}},
{
"3", new List<Student>
{
new Student {Name = "Third"},
new Student {Name = "Fourth"}
}
},
};
var studentList = GetAllValues(studentDict);
studentList.ForEach(s => Console.WriteLine(s.Name));
输出
推荐阅读
- sql - ORA-01722: 无效号码 - 收到此错误
- html - 能够在窗口调整大小/变小时时使用 flexbox 堆叠 div
- php - Symfony 5.1 - 在渲染模板期间抛出异常(“URI 的控制器“/_fragment”不可调用”)
- python - runpy 可以安全使用吗?
- java - 将自定义对象从位置 OnClick 添加到自定义 ArrayList
- node.js - Stripe Connect - 登录崩溃的 URL
- mex - Sprague–Grundy 定理 / 尼姆游戏 / Bowlingpins hackerrank
- amazon-web-services - 如何从现有的复制红移集群参数组工作负载管理设置?
- python - 如何在执行之前通过 python 程序显式配置命令提示符?
- javascript - 使用 JavaScript 更改背景图像