C# 使用List.Sort()时忽略空白

C# 使用List.Sort()时忽略空白,c#,.net,C#,.net,我需要从文本文件中提取数据,对其进行排序,然后用新排序的数据保存旧数据。以下是文本文件的格式: Dog Cow Sheep 如果我将文本读入列表,然后调用sort方法,我会得到以下结果: "" "" "" Cow Dog Sheep 那不是我想要的。有没有一种方法可以让.Sort()忽略空白,或者我应该以不同的方式处理这个问题 编辑当我保存回文件时,我需要有空行。输出应该是 Cow Dog Sheep 我建议您只使用非空格字符串构建另一个列表,并对其进行排序。不仅可以节省时间(

我需要从文本文件中提取数据,对其进行排序,然后用新排序的数据保存旧数据。以下是文本文件的格式:

Dog

Cow

Sheep
如果我将文本读入列表,然后调用sort方法,我会得到以下结果:

""
""
""
Cow
Dog
Sheep
那不是我想要的。有没有一种方法可以让.Sort()忽略空白,或者我应该以不同的方式处理这个问题

编辑当我保存回文件时,我需要有空行。输出应该是

Cow 

Dog

Sheep 

我建议您只使用非空格字符串构建另一个
列表
,并对其进行排序。不仅可以节省时间(如果每对“真实”字符串之间都有空格,则基本上是在毫无理由地将数据排序成倍),而且编写起来会简单得多。

我建议您只使用非空格字符串构建另一个
列表
,并对其进行排序。您不仅可以节省时间(如果在每对“真实”字符串之间都有空格,那么您基本上是在无缘无故地对数据进行双倍排序),而且编写起来会简单得多。

使用Linq。应采取以下措施:

string[] myText = File.RealAllLines("yourfile.txt");
var sortedWithoutEmptyLines = myText
     .Where(t=> !string.IsNullOrEmpty(t))
     .OrderBy(s=>s)
     .Select(i => string.Concat(i, Environment.NewLine)); //Adding extra linebreak as asked
File.WriteAllLines("yourfile.txt", sortedWithoutEmptyLines.ToArray());

使用Linq。应采取以下措施:

string[] myText = File.RealAllLines("yourfile.txt");
var sortedWithoutEmptyLines = myText
     .Where(t=> !string.IsNullOrEmpty(t))
     .OrderBy(s=>s)
     .Select(i => string.Concat(i, Environment.NewLine)); //Adding extra linebreak as asked
File.WriteAllLines("yourfile.txt", sortedWithoutEmptyLines.ToArray());
只需取出所有空行,进行排序,然后将它们放回


只需取出所有空行,进行排序,然后将它们放回。

阅读列表时是否需要保留这些空条目,或者是否可以忽略它们?为什么在构建列表时不忽略它们?每行后面是否总是有一个空行,或者是否需要记住,“牛后面有一条空线,羊后面有三条,狗后面没有空线,等等。“如果每行后面只有一个换行符,则删除所有空行进行排序,并在写入新文件时将其重新添加。在读取列表时是否需要保留这些空条目,或者是否可以忽略它们?为什么在构建列表时不忽略它们?每行后面是否始终有一个空行,或者你需要记住,“牛后面有一条空行,羊后面有三条,狗后面有零条,等等。”如果每一条线后面都有一条断线,那么就把所有的空行都去掉,进行排序,并在写入新文件时将其重新添加。再次写入数据时需要重新添加换行符。WriteAllines将为每个项目添加换行符。我看到原始问题已被编辑为“保存时需要保留空行”。WriteAllines将在每个项目后添加一个换行符。OP在每个项目后需要两个换行符,因此您需要在每个项目后添加一个额外的换行符,可以通过简单的
选择
。重新写入数据时,您需要重新添加换行符。WriteAllines将为每个项目添加换行符。我看到原始问题已被编辑为“保存时需要保留空行”。WriteAllines将在每个项目后添加一个换行符。OP在每个项目后需要两个换行符,因此您需要在每个项目后添加一个额外的换行符,可以通过简单的
选择