2012-10-17 20 views
1

我有一個包含在「塊」格式的一些數據的文本文件:使用linq查詢文本塊?

source : source location 
filename : somefile.txt 
vendor : somevendor 
version : xx.xx.xxx 

source : source location2 
filename : somefile2.txt 
vendor : somevendor2 
version : yy.yy.yyy 

我可以使用LINQ查詢這個數據如果是的話,你將如何做呢?我已經使用linq多次查詢來自文本文件的數據行,但從來沒有像上面那樣的「數據塊」。感謝您的意見。

+1

的這個問題的答案取決於你想如何識別 - 和解析 - 這樣的塊。 –

+0

每個塊都需要是一個記錄,我可以用它來進行一些比較,以相同格式的第二和第三組數據進行比較。那有意義嗎? – MPowers

回答

1

是的,你可以使用LINQ,如果你有大文件,這種方法沒有優化太多。下面是如何得到的數據:

var lines = File.ReadLines("C:\\text.txt") 
       .Where(line => !string.IsNullOrWhiteSpace(line)) 
       .ToList(); 

for (int i = 0; i < lines.Count; i += 4) 
{ 
    var location = lines[i].Split(':')[1]; 
    var fileName = lines[i + 1].Split(':')[1]; 
    var vendor = lines[i + 2].Split(':')[1]; 
    var version = lines[i + 3].Split(':')[1]; 
} 

版本使用LINQ:

var result = Enumerable.Range(0, lines.Count()/4).Select(i => new { 
     location = lines[4*i].Split(':')[1]; 
     fileName = lines[4*i + 1].Split(':')[1]; 
     vendor = lines[4*i + 2].Split(':')[1]; 
     version = lines[4*i + 3].Split(':')[1]; 
    }); 
+0

如何使用linq查詢檢索所有來源,文件名,供應商,版本作爲不同的列表? – Amitd

+0

@Amitd:編輯我的答案使用LINQ –

+0

thx你! :) ..是4i = 4 *我? – Amitd