Это похоже на довольно стандартную компоновку типа CSV, которую легко обрабатывать. Вы действительно можете это сделать с помощью ADO.Net и Jet-провайдера, но я думаю, что в конечном итоге, вероятно, легче обрабатывать его самостоятельно.
Итак, сначала вы хотите обработать фактические текстовые данные. Я предполагаю, что это разумно предположить, каждую запись является разделенным некоторым символом новой строки, так что вы можете использовать метод ReadLine легко получить каждую запись:
StreamReader reader = new StreamReader("C:\Path\To\file.txt")
while(true)
{
var line = reader.ReadLine();
if(string.IsNullOrEmpty(line))
break;
// Process Line
}
А потом обрабатывать каждую строку, вы можете разбить строку на запятой , и сохранить значения в структуре данных.Так что если вы используете структуру данных, как это:
public class MyData
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Balance { get; set; }
public DateTime Date { get; set; }
}
И вы можете обрабатывать данные строки с помощью метода, как это:
public MyData GetRecord(string line)
{
var fields = line.Split(',');
return new MyData()
{
Id = int.Parse(fields[0]),
Name = fields[1],
Balance = decimal.Parse(fields[2]),
Date = DateTime.Parse(fields[3])
};
}
Теперь это самый простой пример, и не учитывает для случаев, когда поля могут быть пустыми, в этом случае вам нужно будет поддерживать NULL для этих полей (с использованием типов с нулевым числом int ?, decimal? и DateTime?) или определить какое-то значение по умолчанию, которое будет присвоено этим значениям.
Итак, если у вас есть возможность хранить коллекцию объектов MyData в списке и легко выполнять вычисления на основе этого. Поэтому, учитывая ваш пример поиска баланса на определенную дату вы могли бы сделать что-то вроде:
var data = customerDataList.First(d => d.Name == customerNameImLookingFor
&& d.Date == dateImLookingFor);
Где customerDataList
это коллекция MyData
объектов чтения из файла, customerNameImLookingFor
это переменная, содержащая имя клиента, и customerDateImLookingFor
является переменная, содержащая дату.
Я использовал эту технику для обработки данных в текстовых файлах в прошлом для файлов от нескольких записей до десятков тысяч записей, и это работает очень хорошо.
Насколько велик файл и есть он или так или иначе? –
Он будет заказан по дате. Размер может быть 3MB – tpow
@cinqoTimo - И вы будете делать несколько поисков против него? –