Member 14760154 wrote:
This is my sample data
001600063 2020-04-14 10:54:45.147
001800081 2020-04-14 10:54:36.540
001800081 2020-04-14 10:54:10.440
001600063 2020-04-13 23:40:10.223
001800081 2020-04-13 11:33:57.000
this is from database sql server
this is second data
001800082 4/14/2020 11:01:52 AM
001600063 4/14/2020 11:02:01 AM
this is from excel file
actually i want to merge both data and sort them
Well, all you need to do is to use Linq ;) See:
DataTable finaldt = new DataTable();
finaldt.Columns.AddRange(new DataColumn[]
{
new DataColumn("SomeNumber", typeof(string)),
new DataColumn("SomeDate", typeof(DateTime))
});
DataTable dt1 = ds1.Table[0];
DataTable dt2 = ds2.Table[0];
finaldt = dt1.AsEnumerable()
.Concat(dt2.AsEnumerable())
.OrderBy(r=> r.Field<DateTime>("SomeDate"))
.Select(r=> finaldt.LoadDataRow(r.ItemArray, false))
.CopyToDataTable();
For further details, please see:
Enumerable.Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) Method (System.Linq) | Microsoft Docs[
^]
Enumerable.OrderBy Method (System.Linq) | Microsoft Docs[
^]
DataTable.LoadDataRow Method (System.Data) | Microsoft Docs[
^]
DataTableExtensions.CopyToDataTable Method (System.Data) | Microsoft Docs[
^]
I was working on this
LinqPad[
^] script:
DataTable dt1 = new DataTable();
dt1.Columns.AddRange(new DataColumn[]
{
new DataColumn("SomeNumber", typeof(string)),
new DataColumn("SomeDate", typeof(DateTime))
});
dt1.Rows.Add(new object[]{"001600063", DateTime.ParseExact("2020-04-14 10:54:45.147", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)});
dt1.Rows.Add(new object[]{"001800081", DateTime.ParseExact("2020-04-14 10:54:36.540", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)});
dt1.Rows.Add(new object[]{"001800081", DateTime.ParseExact("2020-04-14 10:54:10.440", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)});
dt1.Rows.Add(new object[]{"001600063", DateTime.ParseExact("2020-04-13 23:40:10.223", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)});
dt1.Rows.Add(new object[]{"001800081", DateTime.ParseExact("2020-04-13 11:33:57.000", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)});
DataTable dt2 = new DataTable();
dt2.Columns.AddRange(new DataColumn[]
{
new DataColumn("SomeNumber", typeof(string)),
new DataColumn("SomeDate", typeof(DateTime))
});
dt2.Rows.Add(new object[]{"001800082", DateTime.ParseExact("4/14/2020 11:01:52 AM", "M/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture)});
dt2.Rows.Add(new object[]{"001600063", DateTime.ParseExact("4/14/2020 11:02:01 AM", "M/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture)});
DataTable finaldt = new DataTable();
finaldt.Columns.AddRange(new DataColumn[]
{
new DataColumn("SomeNumber", typeof(string)),
new DataColumn("SomeDate", typeof(DateTime))
});
finaldt = dt1.AsEnumerable()
.Concat(dt2.AsEnumerable())
.OrderBy(r=> r.Field<DateTime>("SomeDate"))
.Select(r=> finaldt.LoadDataRow(r.ItemArray, false))
.CopyToDataTable();
finaldt.Dump();