0
我有幾個函數需要在對象列表中創建一個圖表系列。它看起來是重複的,我覺得我可以用Lambda表達式或模板來替換這些類似的功能,但一直未能弄清楚如何處理每個對象上的不同屬性名稱。有人可以幫忙嗎?我可以使用lambda表達式替換多個相似的方法嗎?
這是我有:
private static Series getBuysSeries(List<Order> buys)
{
var series = new Series();
foreach (var buy in buys)
{
series.Points.AddXY(buy.Price, buy.Quantity);
}
return series;
}
private Series getPriceSeries(List<Trade> trades)
{
var series = new Series();
foreach (var trade in trades)
{
series.Points.AddXY(trade.DateTimeUTC, trade.UnitPrice);
}
return series;
}
我想它可能看起來像:
private static Series getBuysSeries(List<Order> buys)
{
return getSeries<Order>(buys);
}
private Series getPriceSeries(List<Trade> trades)
{
return getSeries<Trade>(trades);
}
private Series getSeries<T>(List<T> list)
{
...do the loop but account for property names...
}
這是一個非常深思熟慮的答案。我會看看這個並回復你。 – FistOfFury
+1爲此答案的動態打字部分。不知道這是可能的:-) – TGH
老兄,這太神奇了。正是我在找什麼!事實證明DateTimeUTC是一個DateTime對象,所以我只是改變了模板簽名。私人系列GetSeries(List list,Func selector1,Func selector2) –
FistOfFury