在 C#.net 中使用 LINQ 联接两个 CSV 文件的列

本文关键字:两个 CSV 文件 net LINQ | 更新日期: 2023-09-27 18:35:49

我正在做一个项目,其中包含两个到dataTables的csv文件,我想将它们连接起来并将其分配给一个新的。只有 BIN 或 BBL 列是固定的,其他列会有所不同。我对 linq 了解不多,所以我需要这个帮助。解决方案如下:

    if radioButton1.checked{
    join all the columns in dt1; //dt1 = dt1 + dt2
    }
    else if radioButton2.checked{
    join all the columns in dt2; //dt2 = dt2 + dt1
    }

现在,对于 radioButton1,如果 dt1 和 dt2 具有相同的列,例如 BBL,并且在 dt1 中有 4 行 BBL,在 dt2 中有 5 行,其中前 4 个匹配项存在于 dt1 中,但第 5 个是新的,那么它将在 dt1 中添加此行。对于 radioButton2,反之亦然。

我认为以下类型的sql查询可能会有所帮助,但不确定它是否会正确解决它:

SELECT * FROM dt1,dt2 GROUP BY BBL

我确定它会在 dt1 和 dt2 中添加常见的,但如果 dt2 有额外的行,那么它是否有效,我不知道。

伙计们,请帮助我,我需要你们在这里认真关注。在过去的四天里,我一直被这个问题困住了,但没有解决方案。您的帮助将不胜感激。提前谢谢。-萨凡。

在 C#.net 中使用 LINQ 联接两个 CSV 文件的列

看看这个

var ret = from x in dt1.AsEnumerable()
    join y in dt2.AsEnumerable() on x.Field<int>("ID") equals y.Field<int>("ID") into z
    from y in z.DefaultIfEmpty()
    select new
    {
        ID = x.Field<int>("ID"),
        VAL = x.Field<string>("VAL")
     };