将列表返回到仅包含唯一编号的

时间:2016-02-23 09:51:26

标签: asp.net asp.net-mvc entity-framework code-first

我的应用程序返回OrderRows表中的列表,如下所示:

 var allOrders = db.OrderRows.ToList();

这就是我的班级对OrderRows的看法:

    public class OrderRows
{
    public int ID { get; set; }
    [Display(Name = "Produktid")]
    public int ProductID { get; set; }
    [Display(Name = "Orderid")]
    public int OrderID { get; set; }
    [Display(Name = "Pris")]
    public float Price { get; set; }

    public virtual Orders Orders { get; set; }
}

Order类:

    public class Orders
{
    public int ID { get; set; }
    [Display(Name = "Orderdatum")]
    public DateTime Orderdate { get; set; }
    public int CustomersID { get; set; } 
    public virtual Customers Customers { get; set; }
    public virtual ICollection<OrderRows> OrderRows { get; set; }
}

我正在做一个网店,我已经非常简单了。该表可以有多个OrderID,但是当我将列表传递给视图时,我想进行某种排序,只查看唯一的订单。而不是像这样的列表:

1
1
1
2
2
3
3
3

我想这样:

1
2
3  

我的想法是使用这个数字,并能够选择该顺序并更改其内容。是否可以返回仅包含唯一数字的列表?

3 个答案:

答案 0 :(得分:0)

您可以使用Distinct()扩展方法

如果你想要唯一的orderIds

var allOrders = db.OrderRows.ToList().Select(o=>o.OrderID ).Distinct()

如果您想要带有第一行的唯一orderIds

var allOrders=db.OrderRows.ToList().GroupBy(o=>o.OrderID ).Select(x=>x.First()).ToList()

答案 1 :(得分:0)

试试这个: -

 var allOrders = db.OrderRows.ToList();
 var distinctOrders=allOrders.Distinct();
 view(distinctOrders);

答案 2 :(得分:0)

如果我没错,你想要的是GroupBy

您的查询就像 -

var allOrders=db.OrderRows.GroupBy(o=>o.Orders).ToList()

将其渲染为View-

@foreach(var order in allOrders) {

 <p>@order.Key.ID</p>

  foreach(var orderItem in order.ToList()){

    <ul>
      <li>@orderItem.ProductID, @orderItem.Price</li>
    </ul>
 }
}