C# 使用列表项内容作为字符串名
我正在使用C并从sqlite查询响应中生成列表 列表1包含一个字段,其名称与列表2中的字段相同C# 使用列表项内容作为字符串名,c#,dictionary,reflection,C#,Dictionary,Reflection,我正在使用C并从sqlite查询响应中生成列表 列表1包含一个字段,其名称与列表2中的字段相同 List1[i].field = fieldname 我想使用存储在List1[I].字段中的字段名访问List2中的项目,例如: List2[ii].+List1[i].field+ 我不知道这在C语言中是否是可能的。我对它比较陌生,基本上不了解PHP,在PHP中类似的东西是可以工作的。对于这种类型的数据结构,您通常使用字典键/值对来动态选择对象的属性。对于您的特定示例,这可以通过反射来实现,但
List1[i].field = fieldname
我想使用存储在List1[I].字段中的字段名访问List2中的项目,例如:
List2[ii].+List1[i].field+
我不知道这在C语言中是否是可能的。我对它比较陌生,基本上不了解PHP,在PHP中类似的东西是可以工作的。对于这种类型的数据结构,您通常使用字典键/值对来动态选择对象的属性。对于您的特定示例,这可以通过反射来实现,但它不是很常用,因为其他结构使它更容易实现
List2[ii].GetType().GetProperty(List1[i].field).GetValue(List2[ii], null);
反射通常不是最快的解决方案,如果可以避免的话,使用大量反射来维护代码通常也不太好
或者,您可以使用Linq将List2从对象类型列表转换为字典对象列表,这样您就可以执行类似List2[ii][List1[i].field]的操作来完成同样的任务
var listDictionaries = List2
.Select(l => new Dictionary<string, object>()
{
new { "Prop1", l.Prop1 },
new { "Prop2", l.Prop2 },
new { "Prop3", l.Prop3 },
}).ToArray();
listDictionaries[ii][List1[i].field];
你能再解释一下吗。。我能想到你想做的两三件不同的事情。。但是如果没有一个更有意义的例子,就很难确定你在问什么。我正在尝试使用存储在列表中的值来访问存储在另一个列表中的值。在列表2中存储的名称下。很乐意帮助。我补充了一些关于我提到的那本词典的信息,以防对你有所帮助。这比思考容易得多。谢谢,我会考虑改变我的方法。