2016-04-11 8 views
2

Ich bin ziemlich neu in C# und lerne immer noch, ich entschuldige mich, wenn das eine einfache Frage ist. Wenn ein Benutzer einen Artikel bestellt, wird den Artikeln eine Bestell-ID zugewiesen, die dann mit einem Auftrag verknüpft ist, der diese Bestell-ID verwendet. Jetzt aber muss ich beide verbinden und sie anzeigen, so dass nur der Benutzer sie sehen kann (basierend auf dem Benutzernamen, der in der Befehlsklasse gespeichert ist)C# Liste der ausgeführten Aufträge

Wie würde ich das in meinem ViewOrdersController machen?

Aktuelle Klassen: Bestellen

[Bind(Exclude = "OrderId")] 
    public partial class Order 
    { 
     [ScaffoldColumn(false)] 
     public int OrderId { get; set; } 

     [ScaffoldColumn(false)] 
     public System.DateTime OrderDate { get; set; } 

     [ScaffoldColumn(false)] 
     [Remote("CheckUserName", "Account")] 
     public string Username { get; set; } 

     [Required] 
     [StringLength(16, ErrorMessage = "Your name is too long")] 
     [Display(Name = "First Name")] 
     public string FirstName { get; set; } 

     [Required(ErrorMessage = "Your last name is required.")] 
     [StringLength(16, ErrorMessage = "Last name is too long.")] 
     [Display(Name = "Last Name")] 
     public string LastName { get; set; } 

     [Required(ErrorMessage = "Address is required.")] 
     public string Address { get; set; } 

     [Required(ErrorMessage = "City is required.")] 
     public string City { get; set; } 

     [Required(ErrorMessage = "Postcode is required.")] 
     [Display(Name = "Post Code")] 
     public string PostalCode { get; set; } 

     [Required(ErrorMessage = "Country is required.")] 
     public string Country { get; set; } 

     [Required(ErrorMessage = "Phone number is required.")] 
     public string Phone { get; set; } 

     [RegularExpression(@"[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage = "Email doesn't look like a valid email address.")] 
     public string Email { get; set; } 

     [System.ComponentModel.DataAnnotations.Compare("Email")] 
     [Display(Name = "Confirm your email address")] 
     public string EmailConfirm { get; set; } 


     [ScaffoldColumn(false)] 
     public string PaymentTransactionId { get; set; } 


     public bool HasBeenShipped { get; set; } 

     [ScaffoldColumn(false)] 
     [ReadOnly(true)] 
     public decimal Total { get; set; } 

     public List<OrderDetail> OrderDetails { get; set; } 
    } 

Orderdetail

public class OrderDetail 
    { 
     public int OrderDetailId { get; set; } 
     public int OrderId { get; set; } 
     public int ProductId { get; set; } 
     public int Quantity { get; set; } 
     public decimal UnitPrice { get; set; } 
     public virtual Product Product { get; set; } 
     public virtual Order Order { get; set; } 
    } 

Im Versuch, einen Controller zu erstellen, die dem Benutzer erlaubt, die den Auftrag erteilt hat seine Bestellung

+2

Ihre Frage ist völlig vage - können Sie Ihre aktuellen Klassen zeigen? auch, was ist das ViewOrdersController? Liste, die Artikel zeigt? benutzerdefinierter Controller? – ArielB

+0

Code anzeigen, was Sie bereits versucht haben? –

+2

Sorry readback Ich weiß, wie vage es ist, krank Bearbeiten Sie den Hauptbeitrag in einem Moment –

Antwort

1
int orderId = // The orderId you want to use 
Items.Where(item => item.OrderId == orderId) 

anzuzeigen Dieses Beispiel wird mit Linq (die .Where Funktion) an gemacht d Ausdruck Bäume mit Lambdas (=>). hoffe das hilft. Ich würde empfehlen, in linq zu lesen, da es einer der, wenn nicht der mächtigste Aspekt von .Net/C# im Vergleich zu Java/anderen Sprachen ist.

+0

Danke, ich habe jetzt eine Bash, könntest du vielleicht etwas empfehlen, um auf Linq zu lesen? –

+0

Yea sicher, ich finde, dass dies nützlich ist: http://www.codeproject.com/Articles/19154/Understanding-LINQ-C – Mafii

+0

auch, könnten Sie in linq zu sql suchen, da Sie Entity Framework zu verwenden scheinen ? https://msdn.microsoft.com/en-us/data/ff728653.aspx – Mafii

0

Durch Ihre Klassenstruktur zu sehen, ist hier einfach Codebeispiel, das Ihnen die Sammlung von Orderdetails für einen orderId und Benutzername Objekt einfach lautet:

var orderDetails = Orders.Select(x => x.OrderId = orderId && x.username="yourusename"); 

Jetzt durchläuft diese Elemente unter Verwendung von foreach.

Verwandte Themen