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

我正在使用C#并从sqlite查询响应中创建列表.

List1包含一个在list2中具有字段名称的字段

List1[i].field = fieldname

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

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

我不知道这是否可能以这种方式在C#中对我来说相对较新,并且基本上脱离了我的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];

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...