2016-03-12 4 views
3

У меня есть простой класс, и я хочу, чтобы иметь результаты: (которые правильны до сих пор)Чтение файла во время запроса LINQ

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

в моем Определения класса TEMP1 = Name; temp2 = идентификатор

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
  • Put строки 3 каждый файл в Definitions.Id

Так что я могу получить доступ к ним в любое время и в моей программе.

(мне еще нужно обрезать 3 влево символы строки и 4 правильных символов от него, .. но я, вероятно, управлять этим сам)

ответ

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

'File.ReadLines' просто отлично. Я думаю, вы имели в виду 'File.ReadAllLines'. –

+0

так его хорошо? Просто хочу иметь строку 3 ... – Tetragrammaton

+0

naaaah ..... это очевидно. Я хочу, чтобы это было в моих описаниях классов. Имя и описания. И я получаю доступ к нему в моей основной программе. – Tetragrammaton

Смежные вопросы