我將信息添加到使用此代碼的字典:訂購一個字典
foreach (string word in lineList)
{
if (dictionary.ContainsKey(word))
dictionary[word]++;
else
dictionary[word] = 1;
}
// I believe this is what needs to change..?
var ordered = from k in dictionary.Keys select k;
當我使用StreamWriter
打印出其打印出來在它加入到dictionary
順序的行。
我想要做的是打印出來的訂單首先比較PartDescription
然後PartNumber
並打印出來的數字。
文件看起來是這樣的:
PartDescription PartNumber Name X Y Rotation
1608RTANT 147430 J1 20.555 -12.121 180
TANTD 148966 J2 20.555 -12.121 270
SOMETHING 148966 R111 20.555 -12.121 360
SOMETHING 148966 C121 20.555 -12.121 180
SOMETHING 148966 R50 205.555 -12.121 180
SOMETHING 148966 R51 -205.555 125.121 270
SOMETHING 148966 R52 20.555 -12.121 0
SOMETHING 148966 C12 20.555 -12.121 0
1709RTANT 147430 C98 20.555 -12.121 0
1608RTANT 147429 QD1 20.555 -12.121 180
1709RTANT 147430 F12 20.555 -12.121 0
1609RTANT 147445 P9 20.555 -12.121 180
的StreamWriter
想這樣的輸出:
1, 1608RTANT, 147429, 1 //Line#, PartDescription, PartNumber, # of Duplicates (from dictionary key)
2, 1608RTANT, 147430, 1
3, 1609RTANT, 147445, 1
4, 1709RTANT, 147430, 2
5, SOMETHING, 148966, 6
6, TANTD, 148966, 1
也可以使用SortedDictionary。它比Dictionary 稍慢,因爲SD是O(log 2 n),D是O(1),但它會始終保持數據的排序順序。僅取決於哪一種方法對您的使用更重要:可能的最快查找或保持數據順序。如果你只是將它排序一次輸出,就按建議排序。我只是想拋出另一個選項,以防萬一你需要在多個地方使用這些數據,那麼排序的代價可能會增加,並使SD值稍微慢一些。 –