【发布时间】:2012-09-14 13:02:03
【问题描述】:
我有下面的代码可以满足我的需要,但我知道它可以更快。请让我知道是否可以通过任何方式改进此代码...
主要问题是我需要多次查询“数据”。我只需要确保没有我可以使用的快捷方式。
data= GetData()// this return ILookup<Tuple(string, string, string),string>
foreach (var v0 in data)
{
if (v0.Key.Item3 == string.Empty)
{
//Get all related data
var tr_line = data[v0.Key];
sb.AppendLine(tr_line.First());
foreach (var v1 in data)
{
if (v1.Key.Item2 == string.Empty && v1.Key.Item1 == v0.Key.Item1)
{
var hh_line = data[v1.Key];
sb.AppendLine(hh_line.First());
foreach (var v2 in data)
{
if (v2.Key.Item1 == v0.Key.Item1 && v2.Key.Item2 != string.Empty && v2.Key.Item3 != string.Empty)
{
var hl_sl_lines = data[v2.Key].OrderByDescending(r => r);
foreach (var v3 in hl_sl_lines)
{
sb.AppendLine(v3);
}
}
}
}
}
}
}
【问题讨论】:
-
GetData返回什么类型?IGrouping的数组还是字典? -
请描述你需要代码做什么;只是在那里倾倒一堵代码并问“它可以更好吗?”不可能得到你想要的。
-
您确定
GetData()的返回类型吗?因为我的环境不喜欢v0.Key -
现在执行需要多少时间?
-
好吧,我没有这样的性能问题......这只是为了知道我是否没有使用任何可以用来检索相关分层数据的好功能。