Return 仅使用唯一编号查看的列表

Return List to View with only unique numbers

我的应用程序 return 是 table OrderRows 中的一个列表,如下所示:

 var allOrders = db.OrderRows.ToList();

这就是我的 class 的 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; }
}

订单class:

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

我正在做一个网店,我把它做得很简单。 table 可以有多个 OrderID,但是当我将列表传递给视图时,我想进行某种排序并且只查看唯一的订单。而不是这样的列表:

1
1
1
2
2
3
3
3

我想要这样:

1
2
3  

然后我的想法是使用此号码并能够 select 该命令并更改其内容。是否可以 return 一个只有唯一编号的列表?

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

如果您想要唯一的 orderIds

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

如果您想要具有第一个订单行的唯一 orderId

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

试试这个:-

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

如果我没记错的话,你要的是GroupBy

您的查询是这样的-

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

渲染它以查看-

@foreach(var order in allOrders) {

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

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

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