2015-10-09 76 views
-5

幫我寫C#LINQ語句來比較Datatable 1和Datatable 2,它們都是從不同的源和相同的模式中提取的。如何從基於C#中最後修改日期的兩個數據表中獲取最新記錄行?

需要找到基於上次的最新記錄修改,並把所有的改變成一個數據表或單獨的數據表(插入/更新/刪除)

下面是這種情況

數據表1:從源X

ID  Name  Age  LastModified 
-------------------------------------------------- 
1  Raj  32  10/8/2015 2:26:28 PM 
2  Shiva  27  10/9/2015 10:36:53 PM 
3  John  86  10/5/2015 7:42:25 PM 

數據表2:從源Y

ID Name Age LastModified 
-------------------------------------- 
1 Raj 38 10/9/2015 2:26:28 PM 
2 Shiva 26 10/9/2015 9:36:53 PM 
3 John 86 10/5/2015 7:42:25 PM 
4 Lale 56 10/12/2015 3:36:26 PM 

組合和最新的數據表

ID Name Age LastModified 
---------------------------------------- 
1 Raj  38 10/9/2015 2:26:28 PM 
2 Shiva 27 10/9/2015 10:36:53 PM 
3 John 86 10/5/2015 7:42:25 PM 
4 Lale 56 10/12/2015 3:36:26 PM 
+0

是的,你需要把它寫。 –

回答

0

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("ID", typeof(int)); 
      dt.Columns.Add("Name", typeof(string)); 
      dt.Columns.Add("Age", typeof(int)); 
      dt.Columns.Add("LastModified", typeof(DateTime)); 

      dt.Rows.Add(new object[] {1, "Raj", 38, DateTime.Parse("10/9/2015 2:26:28 PM")}); 
      dt.Rows.Add(new object[] {2, "Shiva", 27, DateTime.Parse("10/9/2015 10:36:53 PM")}); 
      dt.Rows.Add(new object[] {3, "John", 86, DateTime.Parse("10/5/2015 7:42:25 PM")}); 
      dt.Rows.Add(new object[] {4, "Lale", 56, DateTime.Parse("10/12/2015 3:36:26 PM")}); 

      DataRow lastest = dt.AsEnumerable().OrderByDescending(x => x.Field<DateTime>("LastModified")).FirstOrDefault(); 
     } 
    } 
} 
​ 
+0

謝謝Jdweng,正如我在例子中提到的那樣,我們需要比較兩個來自不同源的表並且選擇最新的表 –

+0

我假定你一起加入這兩個表,只需要linq獲得最新的行。 – jdweng

+0

這就是我現在正在掙扎。 :) –

相關問題