我有点再次卡住,因为我无法理解这一点。linq通过花费很长时间的顺序
所以我有一个名为类CSVItem
:
public class CSVItem
{
public int SortedAccountNumber { get; set; }
public DateTime Date { get; set; }
public int SNO { get; set; }
public string AccountNumber { get; set; }
public double Value { get; set; }
public int Year
{
get
{
if (Date.Month > MainWindow.fiscalMonth)
{
return Date.Year+1;
}
return Date.Year;
}
}
public int StaticCounter { get { return 1; } }
public CSVItem(string accNo, DateTime date, double value, int sNo)
{
Value = value;
Date = date;
AccountNumber = accNo;
SNO = sNo;
}
}
我读了CSV,和我做类型CSV项目的有500K左右项的列表。然后我尝试使用列表的默认Order By方法进行排序,并尝试从排序后的集合中返回列表。这里是代码:
List<CSVItem> items = new List<CSVItem>();
// ---- some code to read csv and load into items collection
List<CSVItem> vItems = items.OrderBy(r1 => r1.AccountNumber).ThenBy(r1 => r1.Date).ToList();
这就像是永远排序,然后将集合转换回列表。那么我肯定已经尝试过加载大约一百万条记录,而且从来没有从Linq Sorting那里得到过这样的回应 - 这有点让我发疯。我可以在哪里找到解决问题的任何帮助或建议?
我不知道这会有多大帮助,但您可能需要缓存Year的结果,而不是每次都进行计算。 – skaz
@skaz但似乎他没有使用年来排序.... – HarryQuake
什么是'项目'? – sloth