我有一个增益类,并用数据填充了该类的列表:
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
类似
return ((Gain)Gains.Select(p => p.asset == "assetName").FirstOrDefault()).asset;
不起作用?
简而言之-不。它不能完全回答您的问题,但是您可以使用LINQ:
Gains
.Where(g => g.asset == asset)
.Select(g => g.amount)
.FirstOrDefault() // or First, or Single or SingleOrDefault
[如果您希望选择基于某些数量的字符串而成为动态选择,则您需要自己通过某种reflection魔术来实现它,或者根据字符串创建谓词和选择函数字典(并且返回类型会有一些问题。如果您不想处理对象)。