我有以下型号:
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...
}
}
答案 0 :(得分:1)
使用
!costs.Any(x=>x.Sku == sku)
甚至更好
costs.All(x=>x.Sku != sku)
答案 1 :(得分:1)
如果您要检查任何,那么您可能需要使用.Any
方法。
foreach (var sku in request.Skus)
{
if (!costs.Any(x => x.Sku == sku))
{
//some error handling here...
}
}
或者您可以使用.Exists
foreach (var sku in request.Skus)
{
if (!costs.Exists(x => x.Sku == sku))
{
//some error handling here...
}
}