我有一个传递给方法的字符串数组:
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();
就这样 ;)