如何创建 LINQ,从列表列表中选择列表,它们包含其他列表列表中任何列表的所有元素?

问题描述 投票:0回答:1

我找不到或弄清楚类似的 LINQ 示例。

例如,我有 2 个列表:

List<List<string>> cases = new List<List<string>>()
{
    new List<string>() { "a", "c", "b", "w", "z" },
    new List<string>() { "s", "c", "b", "w", "z" },
    new List<string>() { "t", "c", "b", "w", "z" },
    new List<string>() { "u", "c", "b", "w", "z" }, //<- this one should be picked up
};

List<List<string>> pairs = new List<List<string>>()
{
    new List<string>() { "a", "r" },
    new List<string>() { "a", "f" },
    new List<string>() { "u", "f" },
    new List<string>() { "u", "z" }, //<- these are contained
};

我需要获取包含

cases
中任意元素的所有元素的
pairs
。如何使用 LINQ 做到这一点?

我最好的尝试是:

var res = pairs.Where(x => cases.All(y => x.All(z => y.IndexOf(z) >= 0))).ToList();

但没有给出任何结果:/

c# linq
1个回答
0
投票

这会给你你想要的结果:

var res = cases.Where(caseList => pairs.Any(pairList => pairList.All(caseList.Contains))).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.