标记为C#这个问题? :-)
可能这样吗?全外使用LINQ加入:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
static IEnumerable<string[]> ReadTabFile(string fileName, char delimiter)
{
return File.ReadLines(fileName).Select(line => line.Split(delimiter));
}
static void Main()
{
string[][] lines1 = ReadTabFile("text1.txt", '|').ToArray();
string[][] lines2 = ReadTabFile("text2.txt", '|').ToArray();
var leftOuterJoin = from line1 in lines1
join line2 in lines2
on line1.FirstOrDefault() equals line2.FirstOrDefault()
select new
{
line1,
line2
};
var rightOuterJoin = from line2 in lines2
join line1 in lines1
on line2.FirstOrDefault() equals line1.FirstOrDefault()
select new
{
line1,
line2
};
var fullOuterJoin = leftOuterJoin.Union(rightOuterJoin);
foreach (var test in fullOuterJoin)
{
Console.WriteLine("{0,-40} - {1,-40}", string.Join("|", test.line1), string.Join("|", test.line2));
}
}
结果:
Bacon|Delicious|salty|lowcalorie - Bacon|pork|cheap|crispy
Sausage|Delicious|salty|highfat - Sausage|pork|cheap|null
Chicken|Chicken|chicken|highprotein - Chicken|Chicken|moderate|sandwiches
开始与[如何读取CSV文件导入一个.NET数据表(http://stackoverflow.com/q/1050112/ 205233)(以及相关主题)...一旦将数据加载到DataTable中,它应该使您能够使用所需的查询。 – Filburt
...或给Oledb一个像[从CSV文件填充数据集](http://stackoverflow.com/a/16606837/205233)。 – Filburt