我写了一个简单的程序,如下所示,隐藏了一些细节:
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() 或提前获取结果,但我很想知道幕后发生了什么。