Member 11312264 Ответов: 1

Как внешнее соединение 2 динамических таблиц в LINQ C#


Я использую..

var resultingTable1 = from t2 in DB1.AsEnumerable()
                      join t1 in dtresult.AsEnumerable().DefaultIfEmpty()
                      on new 
                      { 
                         LoginID = t2.Field<string>("Login ID"), 
                         reportdate = Convert.ToDateTime(t2.Field<string>("Login time")).Date.ToString() 
                      } 
                      equals new 
                      { 
                         LoginID = t1.Field<string>("LoginID"), 
                         reportdate = t1.Field<DateTime>("ReportDate").Date.ToString() 
                      }

                      select new { t2,t1 };

Но получение результата как внутреннее соединение
С#

Что я уже пробовал:

var resultingTable1 = from t2 in DB1.AsEnumerable()
                      join t1 in dtresult.AsEnumerable().DefaultIfEmpty()
                      on new { 
                               LoginID = t2.Field<string>("Login ID"), 
                               reportdate = Convert.ToDateTime(t2.Field<string>("Login time")).Date.ToString() 
                             } 
                      equals new { 
                                   LoginID = t1.Field<string>("LoginID"), 
                                   reportdate = t1.Field<DateTime>("ReportDate").Date.ToString() 
                                 }

1 Ответов

Рейтинг:
12

Ehsan Sajjad

Вы на самом деле делаете внутреннее соединение, так что результат правильный в этом смысле, для внешнего соединения вам нужно сделать это немного по-другому, вам придется добавить предложение from также после join like:

var resultingTable1 = from t2 in DB1.AsEnumerable()
                      join t1 in dtresult.AsEnumerable()
                      on new 
                      { 
                         LoginID = t2.Field<string>("Login ID"), 
                         reportdate = Convert.ToDateTime(t2.Field<string>("Login time")).Date.ToString() 
                      } 
                      equals new 
                      { 
                         LoginID = t1.Field<string>("LoginID"), 
                         reportdate = t1.Field<DateTime>("ReportDate").Date.ToString() 
                      }
                       into joinResult
                       from t in joinResult.DefaultIfEmpty()

                      select new { t2,t };


Взгляните на эта должность.


Member 11312264

Да, это работает.. Большое спасибо :)