我的应用程序返回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
我的想法是使用这个数字,并能够选择该顺序并更改其内容。是否可以返回仅包含唯一数字的列表?
答案 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>
}
}