更改通用列表字段中的类型<>

Change type in a Field of a Generic List<>

我有一个 class 的列表调用 Indicator,它需要转换一个属性的值 IndicatorValue 到 Double.

这是class

的例子
    public class Indicator
{
    public int ObjID { get; set; }

    public string IndicatorValue { get; set; }
}

这是class填写列表的虚拟数据。

            IList<Indicator> IndicatorList = new List<Indicator>() {
            new Indicator(){ ObjID=1, IndicatorValue="1.8 s"},
            new Indicator(){  ObjID=2, IndicatorValue="1.5S"},
            new Indicator(){  ObjID=3, IndicatorValue="1.7 "},
            new Indicator(){  ObjID=4, IndicatorValue="1.8 S"}
        };

I 替换新列表中的字符 "s"、S 和“ ”

            var lstResult = (from fx in IndicatorList
                         select new Indicator
                         {
                             ObjID = fx.ObjID,
                            *(Double)*IndicatorValue =  fx.IndicatorValue.Replace("S", "").Replace(" ", "").Replace("s", "")

                         }
         ).ToList();

但我需要在新列表中将字段 IndicatorValue 转换为 Double。

您无法在运行时更改 属性 类型。

为什么不在封装转换的Indicatorclass中添加一个新的属性:

public class Indicator
{
    public int ObjID { get; set; }

    public string IndicatorValue { get; set; }

    public double IndicatorValueAsDouble => double.Parse(IndicatorValue.Replace("S", "").Replace(" ", "").Replace("s", ""));
}

或项目到 DTO:

public class IndicatorDTO
{
     public int ObjID { get; set; }

     public double IndicatorValue { get; set; }
}

select new IndicatorDTO
{
    ObjID = fx.ObjID,
    IndicatorValue = double.Parse(fx.IndicatorValue.Replace("S", "").Replace(" ", "").Replace("s", ""));
}