簡體   English   中英

C#LINQ左連接2個數據表

[英]C# LINQ left join 2 Datatables

我有2個數據表,他們應該加入“UserID”但它不起作用。 我已經閱讀了文檔和其他解決方案,但它們也無法工作。

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);
}

編輯:FileInfo:

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

嘗試下面的代碼,在下面我只使用了一些類來向您展示如何使用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對象,或者你也可以創建另一個包含列表的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM