Так же, как примечание стороны (поскольку Вы плохо знакомы с Delphi): Глобальные переменные могут быть инициализированы непосредственно при объявлении их:
var myGlobal:integer=99;
Вы должны использовать класс TextFieldParser в Microsoft.VisualBasic. dll. (Нет ничего плохого в том, чтобы использовать его в C #.
Помните, что CSV - это гораздо более сложный формат файла, чем вы думаете; как кавычки, так и символы новой строки можно избежать.
Не проверено, но:
static IEnumerable<string> ReadLines(string path) {
using (var file = File.OpenText(path)) {
string line;
while ((line = file.ReadLine()) != null) {
yield return line;
}
}
}
var data = (from line in ReadLines(path)
select line.Split(','))
.ToDictionary(
arr => arr[0].Trim('"', ' '),
arr => int.Parse(arr[1].Trim()));
foreach (string s in File.ReadAllLines(filename)) {
var vals = s.Split(',')
dictionary[vals[0]] = vals[1];
}
LINQ отсутствует, но на самом деле это просто. Однако не обрабатывает встроенные ',' в первое значение.
string[] file = File.ReadAllLines(@"C:\temp\dictionary.txt");
Dictionary<string, string> b = (from p in file
let x = p.Split(',')
select x).ToDictionary(a => a[0], a => a[1]);
Вы можете использовать File.ReadAllLines (), Select () и ToDictionary ( ), чтобы сделать это:
var d = File.ReadAllLines(file).Select( l => {
var split = l.Split(',');
return new { Key = split[0], Value = split[1] };
} ).ToDictionary( p => p.Key, p => p.Value );
Но здесь есть очевидные проблемы в отношении обработки ошибок и устойчивости, и по мере их добавления становится все хуже и хуже. Я не думаю, что есть веская причина предпочесть LINQ или его методы расширения здесь, так как это мало что вам нужно. Уже опубликованные простые способы намного чище.
РЕДАКТИРОВАТЬ: Ответ Сида, например,
CSV может быть намного сложнее, чем кажется на первый взгляд. Вот отличная библиотека для чтения файлов CSV.
Это может оказаться излишним в вашем простом сценарии, но для преобразования CSV в строго типизированную коллекцию я обычно использую FileHelpers .
Это отличный инструмент для ящик для инструментов.