我有一个传递给方法的字符串数组:

private DataTable buildDataTableFromErrorPairs(string[] ErrorPairs)
{ ... }


我想辨别数组中的字符串的长度是否大于150个字符,如果是,则将其截断。我知道数组中最多只能有一个长度大于150的字符串。尝试了一些LINQ,但显然原始字符串没有更改:

var error = ( from e in ErrorPairs
              where e.Length > 150
              select e
            ).FirstOrDefault();

error = error.Substring(0, 100);


尝试了这个可能更接近的lambda:

ErrorPairs = ErrorPairs.Select(s => s.Substring(0, 150)).ToArray();


在发现违规值并将其细分后,大概我将不得不制作一个新的字符串数组?我通常在WPF中工作并使用List<T>,所以在删除和添加元素时没有问题!

最佳答案

首先,如果您想知道数组中至少有一个大于150的字符串,则可以使用:

Boolean error = ErrorPairs.Any(e => e.Length > 150);


然后,对于截断数组,您几乎可以得到答案

ErrorPairs = ErrorPairs.Select(s => s.Substring(0, 150)).ToArray();


只需使用以下命令进行修改:

ErrorPairs = ErrorPairs.Select(s => s.Length > 150 ? s.Substring(0, 150) : s).ToArray();


就这样 ;)

07-25 20:40