如何返回linq结果的子字符串

时间:2019-01-23 12:27:43

标签: c# linq

假设我有一个字符串列表:

originalList = { "XX.one", "XX.two", "YY.three" }

我想使用linq选择并返回带有{"one", "two"}的列表。

例如,我这样做

resultList = originalList.FindAll(o => o.StartsWith("XX")));

我将得到resultList = { "XX.one", "XX.two" },但我想要的是resultList = { "one", "two" }

有什么办法解决这个问题?

编辑:感谢所有回答,我选择了@ er-mfahhgk的split函数,因为它执行的操作最少,并且不取决于前缀的大小。

3 个答案:

答案 0 :(得分:3)

您可以使用SelectWith所需的字符串,然后在点(Split)上使用.功能,可以选择第二部分,例如

var resultList = originalList.Where(o => o.StartsWith("XX"))
                             .Select(x => x.Split('.')[1])
                             .ToList();

最后您的输出将是

foreach (var item in resultList)
{
    Console.WriteLine(item);
}

Console.ReadLine();

输出:

enter image description here

答案 1 :(得分:2)

result = originalList.Where(o => o.StartsWith("XX"))
                         .Select(x=>x.Replace("XX.,""))
                         .ToList();

答案 2 :(得分:1)

您可以尝试以下方法:

resultList = originalList.Where(o => o.StartsWith("XX"))
                         .Select(x=>x.Substring(3))
                         .ToList();

(已编辑以更正Substring的措词)