我有两个我要比较的列表,遗憾的是它们不属于保存类。一个来自magento api,另一个是包含来自另一个的一些值的自定义类。 (只有我需要的那些)
if (existingPhotoOrders.Where(x => x.OrderNumber.CompareTo(order.increment_id) == 0).ToList().Count > 0)
continue;
API存在问题,我必须获取所有订单并比较我想要的订单,然后单独请求额外信息,但上述查询无效,只是继续执行所有操作。
我已经查看了其他比较,但它们都要求类相同。如果有人能说清楚,我将不胜感激。
答案 0 :(得分:1)
可以使用Any
方法重写它:
if (existingPhotoOrders.Any(x => x.OrderNumber.CompareTo(order.increment_id) == 0))
continue;
至于为什么它总是在继续,表达必须永远是真的!我认为要求是if the order increment id is not an order number of an existing order then continue
,在这种情况下,您可以使用All
方法:
if (existingPhotoOrders.All(x => x.OrderNumber.CompareTo(order.increment_id) != 0))
continue;
或者作为一种更高效的替代方案:
var orderIds = new HashSet<int>(existingPhotoOrders.Select(epo => epo.OrderNumber));
foreach (var order in orders)
{
if (!orderIds.Contains(order.increment_id))
{
continue;
}
// rest of method here
}
答案 1 :(得分:0)
x
的类型和order
的类型并不重要,但OrderNumber
和increment_id
的类型不重要。他们是什么类型的?
如果一个是string
而另一个int
,那么您应该将int
转换为string
:
.Where(x => x.OrderNumber == order.increment_id.ToString())