gpt4 book ai didi

Linq 延迟执行

转载 作者:行者123 更新时间:2023-12-04 21:43:31 24 4
gpt4 key购买 nike

我写了一个简单的程序,下面是它的样子,隐藏了一些细节:

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() 或提前获取结果,如果我知道这是一个问题,但我很想知道幕后发生了什么。

最佳答案

最好在 .NET 4.0 中使用 File.ReadLines 来延迟读取文件。就像现在一样,文件的读取不会延迟,并且会在 File.ReadAllLines 返回时将整个文件读入内存。这只会发生一次。

关于Linq 延迟执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com