如果您的CSV文件不會改變太多,結構穩定,你可以簡單地把它解析到的對象的列表在啓動時
private class BookInfo {
string title {get;set;}
string person {get;set;}
List<int> pages {get;set;}
}
private List<BookInfo> allbooks = new List<BookInfo>();
public void parse() {
var lines = File.ReadAllLines(filename); //you could also read the file line by line here to avoid reading the complete file into memory
foreach (var l in lines) {
var info = l.Split(',').Select(x=>x.Trim()).ToArray();
var b = new BookInfo {
title = info[0],
person = info[1]+", " + info[2],
pages = info.Skip(3).Select(x=> int.Parse(x)).ToList()
};
allbooks.Add(b);
}
}
然後你就可以輕鬆地與例如LINQ搜索allbooks
列表。
編輯
現在,你已經澄清你的輸入,我適應瞭解析一點點,以更好地滿足您的需求。
如果你想要麼title
或person
更容易,你也可以對每個屬性
var titleLookup = allbooks.ToLookup(x=> x.title);
var personLookup = allbooks.ToLookup(x => x.person);
所以personLookup["Thomas, George"]
會給你所有bookinfos列表的創建查找搜索您的書目是提及「托馬斯,喬治」和titleLookup["Book 31"]
會給你一個「書31」的所有bookinfos列表,即該書中提到的所有人。
爲什麼XML?如果它是XML,搜索大量數據本身並不容易。 –
我很樂意提供建議......我只需要讓搜索特定名稱更容易一些。 – Alexandre
個人而言,我覺得這種問題是使用數據庫的經典案例。我是[SQlite](https://www.sqlite.org/)的粉絲(也可在NuGet中獲得)。您可以創建數據庫,讀取和解析文件,併爲數據創建記錄。然後你可以讓數據庫引擎爲你搜索你的數據。還有很多其他的方法。 –