2016-08-16 5 views
0

id хотел бы удалить/пропустить эти выделенные строки на изображении ниже, чтобы они больше не появлялись в файле csv. как вы можете видеть ниже, он отображает две строки как (,,), потому что строки пустые.Удалить пустые строки из csv C#

как вы можете также видеть в коде, я пытался использовать string.Empty в обоих методах, но, похоже, никуда не дену, так как я не уверен, как это сделать.

Любые предложения

class Program 
{ 
    static void Main(string[] args) 
    { 
     var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Santander .csv"); 
     var fileContents = ReadFile(filePath); 
     foreach (var line in fileContents) 
     { 
      if (!line.Equals(String.Empty)) 
       continue; 
      Console.WriteLine(line); 
     } 

     Console.WriteLine("Press any key to exit..."); 
     Console.ReadKey(); 
    } 

    public static IList<string> ReadFile(string fileName) 
    { 
     var results = new List<string>(); 
     var target = File.ReadAllLines(fileName) 
       .ToList(); 
     foreach (string currentLine in target) 
     { 
      if(!currentLine.Equals(String.Empty)) 
      { 
       continue; 
      } 


     } 

     File.WriteAllLines(fileName, target); 

     return results.ToList(); 

enter image description here

+0

Вы хотите удалить строку, если какой-либо из столбцов пуст или пуст? –

+0

, если возможно, но в идеале только столбец1 и столбец2 являются главной проблемой. – user5813072

+0

Линия не будет пуста, потому что у нее есть столбцы 3 и 4 .. даже идентификатор все они пустые, у вас есть «,,,» как строка csv .. – BugFinder

ответ

0

Это кажется, что вы хотите проверить только первые и вторые столбцы:

public static IList<string> ReadFile(string fileName) { 
    var target = File 
    .ReadLines(fileName) 
    .Where(line => line 
     .Split(',') 
     .Take(2) 
     .All(item => !string.IsNullOrEmpty(item))) 
    .ToList(); 

    File.WriteAllLines(fileName, target); 

    return result; 
} 
+0

да, что все, что я хочу, потому что все остальные строки содержат данные, которые я хотел бы отображать – user5813072

0

Вы можете отфильтровать строки, разделяя каждую строку с , и сравнение первых двух столбцов.

var nonEmptyLines = File.ReadAllLines(fileName) 
         .Where(x=> !x.Split(',') 
            .Take(2) 
            .Any(cell=> string.IsNullOrWhiteSpace(cell)) 
            // use `All` if you want to ignore only if both columns are empty. 
         ).ToList(); 

File.WriteAllLines(fileName, nonEmptyLines); 
+0

, ваш код, похоже, работает, однако он удаляет строки 3 и 4 в столбцах 3 и 4, которые содержат. я также хотел бы, чтобы они отображались слишком – user5813072

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