【发布时间】:2020-01-15 18:59:53
【问题描述】:
假设我有一个名为Student 的类,它具有ID、FirstName、LastName 的属性。我有一本字典,其中存储了特定学生的一些信息。
我想做类似的事情
var student = new Student();
var studentInfo = new Dictionary<string, string>();
studentInfo["ID"] = "12345";
studentInfo["FirstName"] = "John";
studentInfo["LastName"] = "Doe";
现在我想将键分配给学生的属性。由于字典的键是student 的属性。我想根据键将字典的值分配给学生。这是我的伪代码。
foreach (var studentInfoItem in studentInfo)
{
student.studentInfoItem.Key = studentInfoItem.Value;
}
有什么方法可以正确地做到这一点吗?
【问题讨论】:
-
如果您告诉我们您将使用它来做什么,这将非常有帮助,not just what you are doing。
-
Hrm 这似乎有点 X/Y ish,我不完全满意您以一种有意义的方式使用字典,我的意思是您的字典键是学生的属性名称(这似乎有点奇怪),然后您尝试将值分配给键,这也没有意义。您能告诉我们您要解决什么问题,以便我们排除其他解决方案
-
@DourHighArch 所以我这样做的原因是字典的值来自数据库调用。我找到了一种仅使用一个 DB 调用即可通过键获取所有值的方法。但困难的部分是如何使用字典将这些值分配回对象......另一种解决方案是通过在此示例中调用数据库 3 次来逐个获取值。它会起作用,但速度会非常慢。
-
啊,我明白了,现在这更有意义了。
-
老实说,这样做的“正确”方法是为每个项目输入它,例如
student.Name = studentInfo["Name"]。这样它是类型安全的并且你的依赖是明确的。也许使用反射会节省一些预先打字,但那又怎样?您只需输入一次。
标签: c# list dictionary assign