【问题标题】:Reading file during LINQ query在 LINQ 查询期间读取文件
【发布时间】:2016-03-12 10:31:38
【问题描述】:

我有一个简单的课程,我希望得到以下结果: (到目前为止都是正确的)

            Console.WriteLine(f.temp1);
            Console.WriteLine(f.temp2);

在我的类定义中 temp1=Name; temp2=id

public class Definitions
{
    public string Name { get; set; }
    public string Id { get; set; }
}

class Program
{

    static void Main()
    {
        ReadDefinitions();
    }

    public static void ReadDefinitions()
    {
        var files = from name in Directory.EnumerateFiles(Settings.Folder)
                    from id in File.ReadLines(name).Skip(2).Take(1)

                    select new
                    {
                        temp1= Path.GetFileNameWithoutExtension(name),
                        temp2= id

                    };

        foreach (var f in files)
        {
            Console.WriteLine(f.temp1);
            Console.WriteLine(f.temp2);
        }

        foreach (var f in files)
        {
            Console.WriteLine(f.temp1);
            Console.WriteLine(f.temp2);
        }
    }
}

我知道这个临时的东西很愚蠢,但我无法直接做到这一点。 :(

目标是:

  • 读取包含数千个文件的目录...
  • 将名称放入Definitions.Name
  • 将每个文件的第 3 行放入 Definitions.Id

这样我就可以在我的程序中随时访问它们。

(我仍然需要修剪行的左侧 3 个字符和右侧的 4 个字符,..但我可能会自己处理)

【问题讨论】:

    标签: c# linq class enums


    【解决方案1】:

    如果理解正确,你只需要这样做

        var files = from name in Directory.EnumerateFiles(Settings.Folder)
                    select new
                    {
                        temp1= Path.GetFileNameWithoutExtension(name),
                        temp2= File.ReadLines(name).Skip(2).First()
                    };
    

    如果你想跳过临时的东西,那么你可以:

        var files = from name in Directory.EnumerateFiles(Settings.Folder)
                    select new Definitions 
                    {
                        Name = Path.GetFileNameWithoutExtension(name),
                        Id = File.ReadLines(name).Skip(2).First()
                    };
    

    【讨论】:

    • File.ReadLines 很好。我想你想到了File.ReadAllLines
    • naaaah .....这很明显。我想在我的 Class Descritions.Name 和 Descriptions.Id 中使用它,并在我的主程序中访问它
    • Ivan 是对的,我将它与 ReadAllLines 混淆了。所以你的代码没问题。我现在修改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多