Answers:
尝试
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();仅供参考,Foreach方法将一个Action(取T并返回void)作为参数,并且您的lambda返回一个字符串作为string.Trim返回一个字符串
Foreach扩展方法旨在修改集合中对象的状态。由于字符串是不可变的,因此这无效
希望能有所帮助; o)
塞德里克
ForEach不是扩展方法。
                    因为p.Trim()返回一个新字符串。
您需要使用:
List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();Split返回string []类型。编写扩展方法:
public static string[] SplitTrim(this string data, char arg)
{
    string[] ar = data.Split(arg);
    for (int i = 0; i < ar.Length; i++)
    {
        ar[i] = ar[i].Trim();
    }
    return ar;
}我喜欢您的解决方案,因此决定添加到该解决方案中,并使其更加实用。
public static string[] SplitAndTrim(this string data, char[] arg)
{
    return SplitAndTrim(data, arg, StringSplitOptions.None);
}
public static string[] SplitAndTrim(this string data, char[] arg, 
StringSplitOptions sso)
{
    string[] ar = data.Split(arg, sso);
    for (int i = 0; i < ar.Length; i++)
        ar[i] = ar[i].Trim();
    return ar;
}使用正则表达式
string a="bob, jon,man; francis;luke; lee bob";
			String pattern = @"[,;\s]";
            String[] elements = Regex.Split(a, pattern).Where(item=>!String.IsNullOrEmpty(item)).Select(item=>item.Trim()).ToArray();;			
            foreach (string item in elements){
                Console.WriteLine(item.Trim());结果:
鲍勃
乔恩
男子
弗朗西斯
路加
李
鲍勃
说明模式[,; \ s]:匹配出现一次,,;或空格字符
ForEach在和的当前实例上工作IEnumerable而返回错误void。