2015-06-16 43 views
0

我序列化c#對象並將其附加到文件。但如此多的對象在文件中增加。約20000個對象。在c文件中搜索或查找IO序列化對象#

public void SerializeObject(string filename, ObjectToSerialize objectToSerialize) 
    { 
     Stream stream = File.Open(filename, FileMode.Create); 
     BinaryFormatter bFormatter = new BinaryFormatter(); 
     bFormatter.Serialize(stream, objectToSerialize); 
     stream.Close(); 
    } 

後來我想從這個文件中獲取一個對象。那我怎麼找到它。反序列化數組中的20000對象並通過linq進行搜索有意義嗎?或者有沒有實用的方法?

不重要的編程語言可能是C++或c#。

+2

只是使用一個數據庫來實現它 –

回答

0

沒有任何其他元數據,反序列化對象是唯一的選擇。在反序列化之前,您將無法查詢對象,是的,反序列化20,000個對象將會很困難。

但是,由於您首先將其序列化,因此您可以堅持一些元數據,這樣可以更容易地進行搜索。

例如:

Dictionary<string,string> Index = new Dictionary<string,string>(); 
Index.Add(fileIdentifierThatYouWouldSearchOn,fileName); 

那麼你可以序列索引。每次你堅持一個新的文件,也維護索引文件。然後你可以反序列化索引,找到你想要的文件名,然後加載這個文件。

+0

我想知道,像postgresql,oracle,....這樣的數據庫程序工作嗎? – barteloma

+0

也許你對數據庫不熟悉?除非你有理由將對象存儲爲序列化文件,否則我的第一個傾向就是將對象作爲表存儲在數據庫中。然後使用您選擇的任何ORM(EntityFramework,如果您是MS商店是當前的默認選擇)來處理保溼和脫水您的對象。如果你確實需要將它們序列化到磁盤上,你仍然可以將元數據存儲在數據庫中,並只包含序列化文件的文件名和路徑。 –