无法迭代和比较两个列表

时间:2017-02-24 12:54:41

标签: c# asp.net .net

我有以下型号:

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...
    }
}

2 个答案:

答案 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...
    }
}