我试图用行中的第四个字符串对xls行进行排序。
string[] list_lines = System.IO.File.ReadAllLines(@"E:\VS\WriteLines.xls");
// Display the file contents by using a foreach loop.
System.Console.WriteLine("Contents of Your Database = ");
foreach (var line in list_lines)
{
// Use a tab to indent each line of the file.
Console.WriteLine("\t" + line);
}
我在创建算法时遇到问题,该算法将识别每行的第四个元素并按字母顺序列出内容。 每行中的单词用''。
分隔有人可以把我放在正确的方向吗?
EDIT -------------------------- 好的,
foreach (var line in list_lines.OrderBy(line => line.Split(' ')[3]))
排序问题。线条按我的需要排序。 Excel用';'更改''空格。这就是编译时出错的原因。
现在,我想,我需要将字符串的每个部分解析为int,因为它按第一个数字而不是数字排序。
答案 0 :(得分:1)
您可以拆分行,然后使用OrderBy
中的第三项:
foreach (var line in list_lines.OrderBy(line => line.Split(' ')[3]))
{
}
答案 1 :(得分:1)
好吧,只需排序数组:
string[] list_lines = ...;
// General case: not all strings have 4 parts
Array.Sort(list_lines, (left, right) => {
String[] partsLeft = left.Split(' ');
String[] partsRight = right.Split(' ');
if (partsLeft.Length < 4)
if (partsRight.Length < 4)
return String.Compare(left, right, StringComparison.OrdinalIgnoreCase)
else
return -1;
else if (partsRight.Length < 4)
return 1;
return String.Compare(partsLeft[3], partsRight[3], StringComparison.OrdinalIgnoreCase);
});
如果所有保证的行至少有4个项目,那么它可以简化为
Array.Sort(list_lines, (left, right) =>
String.Compare(left.Split(' ')[3],
right.Split(' ')[3],
StringComparison.OrdinalIgnoreCase));