【问题标题】:C# LINQ left join 2 DatatablesC# LINQ 左连接 2 个数据表
【发布时间】:2019-04-04 05:38:38
【问题描述】:

我有 2 个数据表,它们应该加入“用户 ID”,但它不起作用。我已经阅读了文档和其他解决方案,但它们也不起作用。

var dtjoined = from DataFileInfos in FileInfo.AsEnumerable()
                       join Recips in dtMail.AsEnumerable()
                       on DataFileInfos["UserID"] equals Recips["User name"]
                       into Tb3
                       from Tb3row in Tb3.DefaultIfEmpty()
                       select Tb3;

最后我想要一个带有左连接的数据表。我不明白 LINQ 的要点,即使阅读文档,有人可以解释一下吗?

我如何获取数据表? 我会做类似的事情

foreach(var enum in dtjoined)
{
//do something to add that
myDatatable.rows.add(enum);
}

编辑: 文件信息:

Datatable FileInfo = new Datatable();
FileInfo.Columns.Add("Anything",typeof(anything));
...
FileInfo.Columns.Add("UserID",typeof(string));

dtMail:

Datatable dtMail= new Datatable();
    dtMail.Columns.Add("Anything",typeof(anything));
    ...
    dtMail.Columns.Add("User name",typeof(string));

这是我的两张桌子,我希望他们加入 UserID 所以最后我得到了以下结果:

[FileInfo Column1] [FileInfo Column2] [FileInfo Column3] [FileInfo UserID] [dtMail E-Mail]
SomeValue            SomeValue             SomeValue          UserID1          SomeMail

【问题讨论】:

  • "...不起作用..." - 此信息没有真正的帮助。它没有说明究竟是什么不起作用,即您是否在任何地方收到任何错误消息,您是否尝试调试问题以确保它确实完成了预期的事情。
  • 不,我只是无法列举结果。最后我想要一个数据表
  • 您是否尝试过使用调试器并检查dtjoined - 它是否实现了IEnumerable
  • 你的意思是你“只是不能列举”结果?
  • FileInfodtMail 是一个列表还是什么?尝试在此处完成详细信息,也许有人可以尽快帮助您。

标签: c# linq join datatable


【解决方案1】:

试试下面的代码,在下面我只是使用了一些类来向你展示我们如何使用 LinQ 返回一个自定义对象。

var dtjoined = from DataFileInfos in FileInfo.AsEnumerable()
                   join Recips in dtMail.AsEnumerable()
                   on DataFileInfos.Field<string>("UserID") equals Recips.Field<string>("User name") 
                   select new { FirstColumn= DataFileInfos.FirstColumn, ... }; // or select new { FirstColumn= DataFileInfos.FirstColumn, ... }.ToList();

这将返回一个对象,如果您想要一个列表而不是选择 DataFileInfos 或 Recips 对象,或者您也可以创建另一个包含列表的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2015-05-28
    • 2015-02-28
    • 2017-04-10
    相关资源
    最近更新 更多