1
我有一些数据从数据库中查询,但如果没有特定财政年度的记录,它不会返回到我的列表中。我需要返回所有财务年度,但实际信息(GrossEx,GST,GrossInc)应全部为空。有效地将信息添加到列表中。 Linq联盟?
public class FinancialData
{
public string FinancialYear { get; set; }
public string Type { get; set; }
public decimal? GrossEx { get; set; }
public decimal? GST { get; set; }
public decimal? GrossInc { get; set; }
}
如何有效地补充FinancialYears,2004年至2015年(含毛,GST和GrossInc为空),我的列表中,如果它们不存在?
List<FinancialData> financialDataBucket = new List<FinancialData>();
FinancialData entry1 = new FinancialData { FinancialYear = "2012 - 2013", GrossEx = 1, GrossInc = 1, GST = 1 };
FinancialData entry2 = new FinancialData { FinancialYear = "2013 - 2014", GrossEx = 1, GrossInc = 1, GST = 1 };
financialDataBucket.Add(entry1);
financialDataBucket.Add(entry2);
我试过用linq比较器做一个联盟,但由于某种原因它没有工作,我不明白为什么?这是解决我的问题的最好方法吗?
var merged = allFinancialYearsData.Union(financialDataBucket, new EqComparer());
public class EqComparer : IEqualityComparer<FinancialData>
{
public bool Equals(FinancialData x, FinancialData y)
{
return x.FinancialYear == y.FinancialYear;
}
public int GetHashCode(FinancialData obj)
{
return obj.GetHashCode();
}
}
编辑:
所以,我想无论是创建10个不同的财政年度对象并将其添加到列表或
var currentYear = DateTime.Now.Year + (DateTime.Now.Month < 7 ? 0 : 1);
var earliestYear = 2005;
for (int i = earliestYear; i <= currentYear; i++) {
//Instantiate FinancialData here.....
financialDataItem.FinancialYear = (i-1) + " - " + i
}
谢谢!
Mmh ...什么是你的GetHashCode实现中的“faewfeawfewa”?无论如何,returing obj.GetHashCode意味着你正在比较对象引用而不是值... – digEmAll 2014-08-31 12:07:44
告诉我们如何创建allFinancialYearsData。 – 2014-08-31 12:10:41
fawefeawfewa可能意味着FinancialData – 2014-08-31 12:12:13