在LINQ查询期间读取文件

时间:2016-03-12 10:31:39

标签: c# linq class enums

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

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

在我的班级定义中temp1 =姓名; 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个右边字符,但是我可能会自己管理它)

1 个答案:

答案 0 :(得分:3)

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

    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()
                };