私は簡単なプログラムを書きました、これはそれがどのように見えるか、いくつかの詳細は隠されています:
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()を実行するか、結果を事前に取得できますが、舞台裏で何が起こっているのかを知りたいと思っています。