比较列表中的列表

时间:2017-10-22 12:39:32

标签: c# linq

我有一份清单清单:

List<Product> productList = new List<Product>()
{
    new Product()
    {
        Id = 1,
        Model = "Phone",
        TypeProd = new CheckTypes
        { 
            ChTypes = new List<CHType>
            { 
                new CHType
                { 
                    Id =  8, 
                    IdName = "261"
                }, 
                new CHType 
                {
                    Id = 9 , 
                    IdName = "149" 
                } 
            }
         }
    },
    new Product
    {
        Id = 1,
        Model = "Printer",
        TypeProd = new CheckTypes 
        { 
            ChTypes = new List<CHType> 
            { 
                new CHType 
                { 
                    Id =  8, 
                    IdName = null
                }, 
                new CHType 
                {
                    Id = 8, 
                    IdName = "261" 
                } 
            } 
        }
    }
};

我希望通过将IdName元素与string[]进行比较来获取此列表的第一项:

string[] arrStr = new string[] { "261", "149" };

我怎样才能更好地做到这一点?尝试使用 foreach 并创建一个采用数组值的临时对象,然后使用 intersect 进行比较。

1 个答案:

答案 0 :(得分:0)

你可以用LINQ完成它:

var product = productList
    .FindAll(x => x.TypeProd.ChTypes
                     .All(y => arrString.Contains(y.IdName));

这将为您提供TypeProd.ChTypes元素全部位于arrString的所有产品 为了提高性能,您可能需要将arrString变为HashSet<string>