使用列表项内容作为字符串名称

Using list item contents as string name

我正在使用 C# 并根据 sqlite 查询响应制作列表。

List1 包含一个与 list2 中的字段同名的字段

List1[i].field = fieldname

我想使用 List1[i].field 中存储的字段名来访问 List2 中的项目,例如:

List2[ii].+List1[i].field+

我不知道在 C# 中是否可以通过这种方式实现,我对它还比较陌生,并且基本上脱离了我对 PHP 的了解,这种方式确实有效。

对于这种类型的数据结构,您通常使用字典(key/value 对)动态地select 对象的属性。对于您的具体示例,这可以通过反射来完成,但它不是很常用,因为其他结构使它更容易。

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];