我有以下型号:无法迭代并比较两个列表
public class ProductRequest
{
public List<string> Skus { get; set; }
}
public class ProductResponse
{
public string Sku { get; set; }
public decimal Cost { get; set; }
}
下面的代码是接收的ProductRequest request
的输入参数,并执行一个LINQ查询的方法的一部分。我想检查结果列表中是否缺少原始列表中的任何sku
,但我无法提出正确的语法。它不喜欢行!costs.Contains(sku)
。不知道我在做什么错了?
List<ProductResponse> costs = (from x in this.SkuManager.GetSkusBySkuNumber(request.Skus.ToList())
select new ProductCostResponse
{
Sku = x.Sku,
Cost = x.Cost
}).ToList();
foreach (var sku in request.Skus)
{
if (!costs.Contains(sku))
{
//some error handling here...
}
}
为什么不使用'.Any',而不是'.Contains'? –
'Costs'不能包含'Sku'。 'Sku'是'string'类型,'costs'中的每个'cost'都是'ProductResponse'对象。您需要遍历成本或以其他方式访问“ProductResponse.Sku”属性以进行比较。 – CDove
'HashSet costSkus = new HashSet (costs.Select(c => c.Sku));'然后检查'!costSkus.Contains(sku)'; –
Corak