2017-01-18 9 views
-2

Ich habe einen Linq Code wie folgt:wie Vereinigung für Liste verwenden <anonymousType> und List <Order> in Linq

var checkList = (from dc in _debtorCreditorService.GetAllDebtorCreditors() 
       join n in _notificationService.GetAllNotification() 
       on dc.MaturityDate equals n.CreatedDate 
       where n.CreatedDate.Day == today.Day      
       select new 
       { 
        chek_id = n.TypeId, 
        date = n.CreatedDate, 
        title = n.Title 
       }) 
       .Distinct() 
       .ToList(); 

und ich habe eine Bestellliste wie unten:

List<Order> order 

Wo dies .order Eigenschaften sind orderId und

Ich möchte diese beiden Listen in einer Liste zusammenführen, um {check_id,date,title,OrderId and OrderDate} zu haben und zu senden diese Liste von JSON anzuzeigen

+4

Haben die beiden Typen die gleichen Eigenschaften? Bestellung anzeigen Wenn sie die gleichen Eigenschaften teilen, dann konvertieren Sie linq, um Bestellung auszuwählen und dann Union funktioniert – Nkosi

+2

Sie können nur die gleichen Typen Union. Enthält 'Order' die gleichen Eigenschaften, dann' 'new order {...}' ' –

+0

verwenden Sie wollen zwei verschiedene Listen" Union "(' List 'und eine' List ')? Was sollte das Ergebnis sein? –

Antwort

2

Zum Herstellen der Union Der Name der Seitenspalten muss gleich sein.

// First Collect CheckList 
var checkList = (from dc in _debtorCreditorService.GetAllDebtorCreditors() 
       join n in _notificationService.GetAllNotification() 
       on dc.MaturityDate equals n.CreatedDate 
       where n.CreatedDate.Day == today.Day      
       select new Order 
       { 
        chek_id = n.TypeId, 
        date = n.CreatedDate, 
        title = n.Title , 
        OrderId=0, 
        OrderData=null 
       }) 
       .Distinct() 
       .ToList(); 

// Secondly ,Collect Orders 
var lstOrder=(from n in Order 
      select new Order 
      { 
       chek_id = n.TypeId, 
       date = n.CreatedDate, 
       title = n.Title , 
       OrderId=n.OrderId, 
       OrderData=n.OrderDate 
      }); 

// Finally ,Make Union of both the Table    
var result=checkList.Union(lstOrder).Tolist(); 
2

I Union für Kontroll-Liste verwenden möchten, und List<Order> aber ich weiß nicht, wie . Das Ergebnis sollte ein List<anonymous tpe>

Gut sein, dann ist es eigentlich ganz einfach:

var orders = orderList.Select(o => new 
       { 
        chek_id = o.TypeId, 
        date = o.CreatedDate, 
        title = o.Title 
       }); 
var resultList = checkList.Union(orders).ToList(); 

Dies setzt voraus, dass diese Eigenschaften in Order existieren, aber ich bin sicher, dass Sie den Punkt.

Wenn Sie nur die erste Abfrage benötigen, um die Verbindung zu "füttern", können Sie sie effizienter machen, die Distinct und ToList sind unnötig, weil Union Duplikate entfernt.

Verwandte Themen