我正撞在墙上,我希望有人能指出我正确的方向。这不会像我正在制作那么复杂。
我正在开发一个项目,程序读取一个文件(约50行左右),我需要将第三列的数据与单独行第一列的数据相匹配。我开辟了一个新项目,因为它太复杂了,无法完成这么简单的任务。
这是一个与我正在使用的实际文件密切相关的示例文件:
a1,b1,c1,d1
**c4**,b2,c2,d2
a3,b3,c3,d3
a4,b4,**c4**,d4
a5,b5,c4,d5
我保证这不适用于学校项目,这是我需要为工作目的找出的东西。
这就是我所拥有的,而且我知道它不会起作用,因为它只是逐行阅读以进行比较。如何使程序在foreach命令中读取我在streamreader中捕获的整个文件中的当前数组值?
static void Main(string[] args)
{
StreamReader sr = new StreamReader("directories.txt");
string sline = sr.ReadLine();
string[] sarray = sline.Split(',');
string col3 = sarray[2];
string col1 = sarray[0];
foreach(string a in sarray)
{
// ?!?!?!!!
// I know this won't work because I'm comparing the same line being read.
// How in the world can I make this program read col3 of the current line being read against the entire file that was read earlier?
if (col3 == col1)
{
Directory.CreateDirectory("DRIVE:\\Location\\" + a.ToString());
}
}
}
提前谢谢你!
答案 0 :(得分:2)
由于您的文件很小,您可以使用最简单的路径......
var lines = File.ReadLines(filename)
.Select(line => line.Split(','))
.ToList();
var result = from a in lines
from b in lines
where a[0] == b[2]
select new { a, b };
foreach(var x in result)
{
Console.WriteLine(string.Join(",", x.a) + " - " + string.Join(",", x.b));
}