2011-06-06 100 views
27

我有兩個列表List<WorkOrder>List<PlannedWork>我想加入工作訂單號碼上的兩個列表,如下所述。換句話說,我有一個計劃工作的列表,但我需要知道workOrderNumber的工作描述。如何使用linq或lambda表達式加入兩個列表

我對linq和lambda表達式都很陌生,而且我還沒有把自己的頭圍繞在他們身上。

class WorkOrder 
{ 
    public int WorkOrderNumber { get; set; } 
    public string WorkDescription { get; set; } 
} 

class PlannedWork 
{ 
    public int WorkOrderNumber { get; set; } 
    public DateTime ScheduledDate { get; set; } 
} 

回答

54

這聽起來像你想要的東西,如:

var query = from order in workOrders 
      join plan in plans 
       on order.WorkOrderNumber equals plan.WorkOrderNumber 
      select new 
      { 
       order.WorkOrderNumber, 
       order.Description, 
       plan.ScheduledDate 
      }; 
+7

喬恩Skeet ...我發佈了這30秒前..你已經有一個答案! – Brad 2011-06-06 14:42:18

+7

他知道他妻子在想什麼。 – 2015-03-15 22:04:23

+0

@SRJ:我不清楚你在問什麼。我建議你用[mcve]創建一個新問題,顯示你正在嘗試做什麼,嘗試了什麼以及發生了什麼。 – 2017-12-06 09:22:30

46

做到這一點使用進一步擴展方法的方式,而不是LINQ查詢語法將是這樣的:

var results = workOrders.Join(plans, 
    wo => wo.WorkOrderNumber, 
    p => p.WorkOrderNumber, 
    (order,plan) => new {order.WorkOrderNumber, order.WorkDescription, plan.ScheduledDate} 
); 
+5

+1爲linq擴展方法。在C#中讀寫時,我發現這個版本更好。 – 2013-07-23 23:56:08

1
public class State 
     { 
      public int SID { get; set; } 
      public string SName { get; set; } 
      public string SCode { get; set; } 
      public string SAbbrevation { get; set; } 
     } 

     public class Country 
     { 
      public int CID { get; set; } 
      public string CName { get; set; } 
      public string CAbbrevation { get; set; } 
     } 


List<State> states = new List<State>() 
      { 
       new State{ SID=1,SName="Telangana",SCode="+91",SAbbrevation="TG"}, 
       new State{ SID=2,SName="Texas",SCode="512",SAbbrevation="TS"}, 
      }; 

      List<Country> coutries = new List<Country>() 
      { 
       new Country{CID=1,CName="India",CAbbrevation="IND"}, 
       new Country{CID=2,CName="US of America",CAbbrevation="USA"}, 
      }; 

      var res = coutries.Join(states, a => a.CID, b => b.SID, (a, b) => new {a.CName,b.SName}).ToList(); 
+0

我不確定這是如何回答這個問題的...... – TheLethalCoder 2016-12-30 12:37:13

+0

請提供這段代碼的一些解釋(正確縮進也是很好的),以及它爲什麼回答這個問題。 – trincot 2016-12-30 13:11:24