C#:使用字符串参数从类列表中返回数据

问题描述 投票:0回答:2

我有一个增益类,并用数据填充了该类的列表:

internal class Gain {
    internal string asset { get; set; }
    internal float amount { get; set; }
    internal float cost { get; set; }
}
private static List<Gain> Gains = new List<Gain>();

用户可以发送字符串命令,例如“ AssetName”或“ amount”,以获取特定数据。

string asset="AssetName";
string datatype="amount"; // or "cost" etc

在C#中,有一种紧凑的语法可以在一行中为“收益”列表中的特定资产选择特定数据,例如:

return Gains[AssetName].[datatype]; // or something like this
c# class syntax
2个回答
0
投票

类似

 return ((Gain)Gains.Select(p => p.asset == "assetName").FirstOrDefault()).asset;

不起作用?


0
投票

简而言之-不。它不能完全回答您的问题,但是您可以使用LINQ

Gains
    .Where(g => g.asset == asset)
    .Select(g => g.amount)
    .FirstOrDefault() // or First, or Single or SingleOrDefault

[如果您希望选择基于某些数量的字符串而成为动态选择,则您需要自己通过某种reflection魔术来实现它,或者根据字符串创建谓词和选择函数字典(并且返回类型会有一些问题。如果您不想处理对象)。

© www.soinside.com 2019 - 2024. All rights reserved.