我必須能夠列出可能包含具有特定標準的doubloon的對象列表。到目前爲止,代碼正在工作,但是我的列表中有50,000行需要10分鐘。我可以做些什麼來優化我的linq查詢嗎?
下面是代碼:
public class TestObject
{
public string value1;
public string value2;
public string value3;
public string value4;
public int num1;
public int num2;
}
public static List<TestObject> ReturnTestObjectListWithoutDoubloon(List<TestObject> source)
{
var destination = new List<TestObject>();
var list = new Dictionary<int, TestObject>();
while (source.Count > 0)
{
list.Clear();
var originalElement = source[0];
foreach (var query in source.Select((element, index) => new { Value = element, Index = index })
.Where(currentElement => (currentElement.Value.value1 == originalElement.value1)
&& (currentElement.Value.value2 == originalElement.value2)
&& (currentElement.Value.value3 == originalElement.value3)
&& (currentElement.Value.value4 == originalElement.value4)))
{
list.Add(query.Index, query.Value);
}
if (list.Count > 1)
{
originalElement.num1 = list.Sum(a => a.Value.num1);
originalElement.num2 = list.Sum(a => a.Value.num2);
}
destination.Add(originalElement);
foreach (var positionToremove in list.Keys)
source.RemoveAt(positionToremove);
}
return destination;
}
的想法是每個所以我的LINQ的要求是最小的名單可能在執行我通過while循環時間縮短列表。然而,我擁有的金幣越少,速度就越慢。我正在尋找一種解決方案,使我可以擁有最小的rutnime,內存不是問題。
有沒有人有想法?
杜布隆=雙重元素,你想要做的事,當你遇到這種情況? – Femaref 2011-03-16 17:58:38
我聞到copypasta錯誤:你確定將value3與value4比較? (currentElement.Value.value3 == originalElement.value4) – 2011-03-16 18:02:38
A doubloon是一枚金幣。我不明白與這個問題有什麼關係。 – Gabe 2011-03-16 18:02:51