当我使用String.Split
随机字符串时,我正面临这个异常.
List<string> linhas = new List<string>();
linhas.Add("123;abc");
linhas.Add("456;def");
linhas.Add("789;ghi");
linhas.Add("chocolate");
var novas = linhas.Where(l => l.ToString().Split(';')[1]=="def");
Run Code Online (Sandbox Code Playgroud)
Tim*_*ter 12
最后一个字符串"chocolate"
不包含a ";"
,因此String.Split
返回一个包含单个字符串的数组"chocolate"
.这就是为什么如果你尝试访问第二个,你会得到异常的原因.
您可以使用ElementAtOrDefault
哪个null
字符串返回:
var novas = linhas.Where(l => l.Split(';').ElementAtOrDefault(1) == "def");
Run Code Online (Sandbox Code Playgroud)
使用匿名类型的更长方法:
var novas = linhas
.Select(l => new { Line = l, Split = l.Split(';') })
.Where(x => x.Split.Length >= 2 && x.Split[1] == "def")
.Select(x => x.Line);
Run Code Online (Sandbox Code Playgroud)