I have created a method in c# to return a Tuple. I am having trouble assigning the results to the Tuple.
I have created a Tuple by the name Tuple benchMarkReturns; How to assign values. Currently when i do a benchMarkReturns. , I mean dot, I get Item1 and Item2 properties that are readonly.
If anybody feels there is better way of doing it suggestions are wellcome
Need to call the method in the following foreach loop for fields Bmrk1 and Bmrk2.
I need to assign compoundReturnsBenchMark1 and compoundReturnsBenchMark2 to the tuple
foreach (var p in performance)
{
var model = new TrackRecordVM
{
Year = p.Key,
Jan = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 1) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 1).MTD : null),
Feb = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 2) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 2).MTD : null),
Mar = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 3) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 3).MTD : null),
Apr = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 4) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 4).MTD : null),
May = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 5) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 5).MTD : null),
Jun = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 6) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 6).MTD : null),
Jul = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 7) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 7).MTD : null),
Aug = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 8) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 8).MTD : null),
Sep = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 9) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 9).MTD : null),
Oct = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 10) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 10).MTD : null),
Nov = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 11) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 11).MTD : null),
Dec = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 12) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 12).MTD : null),
YTD = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 12) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 12).YTD : null),
Bmrk1 = ,
Bmrk1Name = "Test1",
Bmrk2 = ,
Bmrk2Name = "Test2"
//Bmrk = (double?)(p.FirstOrDefault(x => x.VALUEDATE.Month == 12) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 12).BENCHMK1_MTD : null),
//BmrkName = p.FirstOrDefault(x => x.VALUEDATE.Month == 12) != null ? p.FirstOrDefault(x => x.VALUEDATE.Month == 12).BENCHMK1_INDEX_NAME : null
};
The method that returns Tuple values
private Tuple<double, double> GetBenchMarkByYear(int year, int benchMark1, int benchMark2)
{
Tuple<double, double> benchMarkReturns;
var benchMark1Returns = GetViewService<MV_INDEX_PERFORMANCE>().Where(x => x.Mtd != null && x.IndexId == benchMark1 && x.PriceDate.Year == year).Select(x => x.Mtd).ToArray();
var benchMark2Returns = GetViewService<MV_INDEX_PERFORMANCE>().Where(x => x.IndexId == benchMark2 && x.PriceDate.Year == year).Select(x => x.Mtd).ToArray();
double[] temp1 = benchMark1Returns.Cast<double>().ToArray();
double[] temp2 = benchMark2Returns.Cast<double>().ToArray();
var compoundReturnsBenchMark1 = CompoundReturns(temp1);
var compoundReturnsBenchMark2 = CompoundReturns(temp2);
return benchMarkReturns;
}