【发布时间】:2022-01-04 14:48:32
【问题描述】:
假设我有这个对象列表:
var shipments = new List<ShipmentTracking>() {
new ShipmentTracking() {
trackingNumber = "32021001000", trackings = new List<Tracking>() {
new Tracking() { trackingCode = "EBC", trackingPoint = "Entered", trackingDateTime = DateTime.Now, trackingMemo = "" }
}
},
new ShipmentTracking() {
trackingNumber = "32021001001", trackings = new List<Tracking>() {
new Tracking() { trackingCode = "EBC", trackingPoint = "Entered", trackingDateTime = DateTime.Now.AddDays(1), trackingMemo = "" },
new Tracking() { trackingCode = "AWB", trackingPoint = "Registered", trackingDateTime = DateTime.Now.AddDays(1), trackingMemo = "" }
}
},
new ShipmentTracking() {
trackingNumber = "32021001002", trackings = new List<Tracking>() {
new Tracking() { trackingCode = "EBC", trackingPoint = "Entered", trackingDateTime = DateTime.Now.AddDays(2), trackingMemo = "" },
new Tracking() { trackingCode = "AWB", trackingPoint = "Registered", trackingDateTime = DateTime.Now.AddDays(2), trackingMemo = "" },
new Tracking() { trackingCode = "DSP", trackingPoint = "Shipped", trackingDateTime = DateTime.Now.AddDays(2), trackingMemo = "" }
}
},
new ShipmentTracking() {
trackingNumber = "32021001003", trackings = new List<Tracking>() {
new Tracking() { trackingCode = "EBC", trackingPoint = "Entered", trackingDateTime = DateTime.Now.AddDays(3), trackingMemo = "" },
new Tracking() { trackingCode = "AWB", trackingPoint = "Registered", trackingDateTime = DateTime.Now.AddDays(3), trackingMemo = "" },
new Tracking() { trackingCode = "DSP", trackingPoint = "Shipped", trackingDateTime = DateTime.Now.AddDays(3), trackingMemo = "" },
new Tracking() { trackingCode = "CCI", trackingPoint = "Cleared", trackingDateTime = DateTime.Now.AddDays(3), trackingMemo = "" }
}
},
new ShipmentTracking() {
trackingNumber = "32021001004", trackings = new List<Tracking>() {
new Tracking() { trackingCode = "EBC", trackingPoint = "Entered", trackingDateTime = DateTime.Now.AddDays(4), trackingMemo = "" },
new Tracking() { trackingCode = "AWB", trackingPoint = "Registered", trackingDateTime = DateTime.Now.AddDays(4), trackingMemo = "" },
new Tracking() { trackingCode = "DSP", trackingPoint = "Shipped", trackingDateTime = DateTime.Now.AddDays(4), trackingMemo = "" },
new Tracking() { trackingCode = "CCI", trackingPoint = "Cleared", trackingDateTime = DateTime.Now.AddDays(4), trackingMemo = "" },
new Tracking() { trackingCode = "POD", trackingPoint = "Delivered", trackingDateTime = DateTime.Now.AddDays(4), trackingMemo = "" }
}
}
};
我需要只检查并返回具有 trackingCode == "DSP" 但不使用 "CCI" 或 "POD" trackingCode 的货件跟踪的查询,因此在此示例中使用跟踪号 32021001002 进行货件跟踪就是那个。
我试过了,但似乎没有用:
foreach (var shipment in shipments)
{
var foo = shipment.trackings.FirstOrDefault((t => t.trackingCode == "DSP" && t.trackingCode != "CCI"));
if (shipment.trackings.Contains(foo))
{
}
}
感谢任何帮助或指针。 谢谢!
【问题讨论】:
-
t.trackingCode == "DSP" && t.trackingCode != "CCI"- 第二个谓词是多余的。如果 TrackingCode 等于“DSP”,则它自动不等于“CCI”。您犯了一个典型的错误,即(作为人类)查看跨行的值,但编写的代码比较同一行中的值