代码之家  ›  专栏  ›  技术社区  ›  DooDoo

获取包含另一个列表的项的列表

  •  -2
  • DooDoo  · 技术社区  · 7 年前

    请考虑以下字符串列表:

    Afghanistan, Albania, Algeria, El Salvador,
    Equatorial, Guinea, Eritrea, Estonia
    Ethiopia, Panama, Papua, Paraguay
    Peru, Togo, Trinidad & Tobago, Tunisia, Turkey
    

    我还有另一个清单:

    tan, ia, Tu
    

    我想要所有包含 tan ia Tu . 如果没有 foreach

    谢谢

    3 回复  |  直到 7 年前
        1
  •  2
  •   Emre Kabaoglu    7 年前

    尝试这样的事情;

    var listA = new List<string> {"Afghanistan", "England"};
    var listB = new List<string> {"afg"};
    listA = listA.Where(x => listB.Any(k => x.IndexOf(k, StringComparison.OrdinalIgnoreCase) > -1)).ToList();
    

    此外,我忽略了区分大小写的内容。如果要执行区分大小写的使用 x.IndexOf(k, StringComparison.Ordinal) 而不是 x.IndexOf(k, StringComparison.OrdinalIgnoreCase) .

        2
  •  2
  •   Dmitry Bychenko    7 年前

    尝试 Linq公司 将为您执行循环:

      List<string> source = new List<string>() {
        "Afghanistan", "Albania", "Algeria",
      };
    
      string[] filters = new[] {"tan", "ia", "Tu"};
    
      List<string> result = source
        .Where(country => filters.Any(filter => country.Contains(filter)))
        .ToList(); 
    
        3
  •  1
  •   Jakub Rusilko    7 年前

    尝试使用简单的Where语句检查内部的所有筛选器,如下所示:

    var countries = new List<string>
        {
            "Afghanistan",
            "Albania",
            "Algeria",
            "El Salvador",
            "Equatorial",
            "Guinea",
            "Eritrea",
            "Estonia",
            "Ethiopia",
            "Panama",
            "Papua",
            "Paraguay",
            "Peru",
            "Togo",
            "Trinidad & Tobago",
            "Tunisia",
            "Turkey"
        };
        var filters = new List<string> {"tan", "ia", "Tu"};
        var result = countries.Where(country => filters.Any(filter => country.Contains(filter)));
        foreach (var resultItem in result)
        {
             Console.WriteLine(resultItem);
        }
        Console.ReadKey();
    

    也可以在这把小提琴中查看: https://dotnetfiddle.net/PdZvp4