2016-04-11 72 views
2

我对C#很陌生,仍然在学习,如果这是一个简单的问题,我很抱歉。 当用户订购一个或多个项目时,将为这些项目分配一个OrderId,然后使用此OrderId将其与订单相关联。现在,但是我需要链接这两个并显示它们,因此只有订购它们的用户才能查看它们(基于存储在订单类中的用户名)C#订单清单

我会如何在ViewOrdersController中执行此操作?

当前职业: 订购

[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; } 
    } 

我试着去创建一个控制器,允许对已作出的命令来查看自己的订单的用户

+2

你的问题完全含糊 - 你可以显示你当前的课程吗? 另外,这是什么ViewOrdersController?列表显示项目?定制控制器? – ArielB

+0

显示你已经尝试过的一些代码? –

+2

对不起回复我意识到它是多么模糊,在一瞬间编辑不了主要的帖子 –

回答

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

这个例子是用Linq(.Where函数)完成的d与lambda表达树(=>)。希望这可以帮助。我建议读入linq,因为它与.Net/C#相比,Java /其他语言的功能如果不是最强大的方面之一。

+0

谢谢,我现在对此感到厌烦,你能否推荐任何关于Linq的内容? –

+0

是啊当然,我觉得这是有用的:http://www.codeproject.com/Articles/19154/Understanding-LINQ-C – Mafii

+0

也,你可能想看看LINQ到SQL,因为你似乎使用实体框架? https://msdn.microsoft.com/en-us/data/ff728653.aspx – Mafii

0

通过观察你的类结构,下面是简单的代码示例它只是为您提供的搜集的对象订单明细为订单ID和用户名:

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

现在通过使用的foreach这些项目迭代。