Я написал простую программу, вот как она выглядит, некоторые детали скрыты:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace routeaccounts
{
class Program
{
static void Main(string[] args)
{
//Draw lines from source file
var lines = File.ReadAllLines("accounts.txt").Select(p => p.Split('\t'));
//Convert lines into accounts
var accounts = lines.Select(p => new Account(p[0], p[1], p[2], p[3]));
//Submit accounts to router
var results = accounts.Select(p => RouteAccount(p));
//Write results list to target file
WriteResults("results.txt", results);
}
private static void WriteResults(string filename, IEnumerable<Result> results)
{
... disk write call ...
}
private static Result RouteAccount(Account account)
{
... service call ...
}
}
}
У меня такой вопрос - очевидно, что при выборе из контекста данных выполнение откладывается. Если вы заметили, что в первом утверждении функции «Main» я запрашиваю из File.ReadAllLines («accounts.txt»). Это плохой выбор? Если я перечислю окончательный результат, будет ли это утверждение повторяться?
Я могу просто .ToArray () или забрать результаты заранее, если я знаю, что это проблема, но мне интересно знать, что происходит за кулисами.