C# 如何在C中比较列表类型对象的列名和字符串#

C# 如何在C中比较列表类型对象的列名和字符串#,c#,asp.net-mvc,c#-4.0,C#,Asp.net Mvc,C# 4.0,我有一个列表类型的对象,在其中我从存储过程传递数据。结果集有一些列需要与字符串进行比较。 例如,colName1==“abc” 如何遍历列表中的列并将列名与字符串进行比较?如何访问该列的文本 modelSP.objAbsentDetail = dbOracle.STORED_PROC_DTL(ENGG, YY, MM, Location).ToList(); foreach(var item in model.objAbsentDetail) { //i

我有一个列表类型的对象,在其中我从存储过程传递数据。结果集有一些列需要与字符串进行比较。 例如,colName1==“abc”

如何遍历列表中的列并将列名与字符串进行比较?如何访问该列的文本

modelSP.objAbsentDetail = dbOracle.STORED_PROC_DTL(ENGG, YY, MM, Location).ToList();

foreach(var item in model.objAbsentDetail)
        {
            //item.C1 (Column Name, not value) == "abc"
        }
模型类:

public class abc
{
     public List<STORED_PROC_DTL_Result> objAbsentDetail { get; set; }
}
公共类abc
{
公共列表详细信息{get;set;}
}

如果您不想为此使用反射,可以使用字典而不是命名变量来支持您的属性:

private Dictionary<string, object> _values = new ...

public string C1{
  get{
    if(!_values.ContainsKey("C1"))
      return null;
    return (string)_values["C1"];
  }
  set{
    _values["C1"] = value;
  }
}
private Dictionary\u values=new。。。
公共字符串C1{
得到{
如果(!_值.ContainsKey(“C1”))
返回null;
返回(字符串)_值[“C1”];
}
设置{
_数值[“C1”]=数值;
}
}

然后可以使用反射在_values.Keys中搜索列名

,但列名不会更改吗?如果SP返回
C1
列,
存储的\u PROC\u DTL\u结果.C1
将始终包含该值。所以<代码>如果(nameof(item.C1)=“C1”){…}将始终生成true。这听起来像是个XY问题。相反,请正确地解释您的最终目标以及为什么您认为需要从属性名称中了解列名,也许可以说一些有用的话。没有item.C1会产生C1列的第一行值,而不是名称“C1”。它是
nameof(item.C1)
,它将返回名称“C1”。