代码之家  ›  专栏  ›  技术社区  ›  Thorin Oakenshield

在C中使用Linq操作List<String>#

  •  3
  • Thorin Oakenshield  · 技术社区  · 14 年前

       List<String> ListOne = new List<string> { "A-B", "B-C" };
    

    如果每个字符串包含“-”,我需要将其拆分并添加到同一个列表中

     { "A-B", "B-C","A","B","C" };
    

    现在我用的是

           for (int i = 0; i < ListOne.Count; i++)
            {
                if (ListOne[i].Contains('-'))
                {
                   List<String> Temp = ListOne[i].Split('-').ToList();
                   ListOne= ListOne.Union(Temp).ToList();
                }
            }
    

    使用LINQ有什么方法可以做到这一点吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Yuriy Faktorovich    14 年前
    ListOne.Union(ListOne.SelectMany(i => i.Split('-')))
    
        2
  •  3
  •   JaredPar    14 年前

    请尝试以下操作

    List.AddRange(
      ListOne
        .Where(x => x.Contains("-"))
        .SelectMany(x => x.Split('-'))
        .Distinct()
        .ToList());