我有一个包含ordernumber
、invoiceNumber
和itemnumber
字段的列表。
List<OrderDetail> lst=new List<OrderDetail>()
{
new OrderDetail{
ordernumber="O123",
invoiceNumber="Inv123",
itemnumber="I123"}
}
lst.Add(new OrderDetail(){
ordernumber="O123",
invoiceNumber="Inv124",
itemnumber="I145"
});
lst.Add(new OrderDetail(){
ordernumber="O456",
invoiceNumber="Inv125",
itemnumber="I145"
});
lst.Add(new OrderDetail(){
ordernumber="O456",
invoiceNumber="Inv125",
itemnumber="I145"
});
我想找到所有ordernumber
相同但invoiceNumbers
不同的订单,然后抛出一个错误,我们如何识别这样的记录?
我使用了以下代码:
List<string> lstOrders=lst.select(x=>x.ordernumber).Distinct().ToList();
foreach(var order in lstOrders)
{
List<string>lstInvoice = lst.where(x=>x.ordernumber==order).select(x=>invoiceNumber).Distinct().ToList();
if(lstInvoice.Count >1)
{
throw;
}
}
有没有其他有效的方法?
3条答案
按热度按时间4ioopgfo1#
如果要查找具有多张发票的所有订单,可以使用以下命令:
nukf8bse2#
您可以使用LINQ GroupBy按订单号对订单进行分组,然后筛选具有多个不同发票号的组。
ncecgwcz3#
核心部分与Tim的答案相同,不过我添加了可以为具有不同发票的每个订单抛出异常的部分。
对于您的示例,它将输出:
订单编号O123具有不同的发票编号:入侵123入侵124。