Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LINQ查询期间读取文件_C#_Linq_Class_Enums - Fatal编程技术网

C# 在LINQ查询期间读取文件

C# 在LINQ查询期间读取文件,c#,linq,class,enums,C#,Linq,Class,Enums,我有一个简单的类,我想得到以下结果: (到目前为止都是正确的) 在我的类定义中,temp1=Name;temp2=id public class Definitions { public string Name { get; set; } public string Id { get; set; } } class Program { static void Main() { ReadDefinitions(); } publ

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

在我的类定义中,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);
        }
    }
}
我知道这对临时工来说很愚蠢,但我无法直接做到(

目标是:

  • 读取包含数千个文件的目录
  • 将名称放入定义中。名称
  • 将每个文件的第3行放入Definitions.Id中
这样我就可以在程序中随时访问它们


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

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

    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
.naaah…..这是显而易见的。我想在我的类描述中包含它。名称和描述。Id,并在我的主程序中访问它。范是对的,我把它和ReadAllLines混淆了。所以你的代码没问题。我现在就结束
    var files = from name in Directory.EnumerateFiles(Settings.Folder)
                select new Definitions 
                {
                    Name = Path.GetFileNameWithoutExtension(name),
                    Id = File.ReadLines(name).Skip(2).First()
                };