我有一个字符串数组,我需要使用字符串数组中的第一个字符串,它不是null.让我们考虑一下这段代码片段 -
string[] strDesc = new string[] {"", "", "test"};
foreach (var Desc in strDesc)
{
if (!string.IsNullOrEmpty(Desc))
{
txtbox.Text = Desc;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,根据此代码段,现在应显示txtbox "test".
要做到这一点,我有这个代码.这工作正常.但是,我想知道是否可以使用LINQ获得相同的结果,并且可能跳过使用额外的foreach循环?
Kla*_*sen 11
你可以这样做:
var result = strDesc.First(s => !string.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)
或者,如果要直接在文本框中设置它:
txtbox.Text = strDesc.First(s => !string.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)
请注意,First如果没有字符串符合条件,将抛出异常,因此您可能希望:
txtbox.Text = strDesc.FirstOrDefault(s => !string.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)
FirstOrDefault 如果没有元素计算标准,则返回null.
只是一个有趣的替代语法,以表明您并不总是需要使用lambdas或匿名方法来使用LINQ:
string s = strDesc.SkipWhile(string.IsNullOrEmpty).First();
Run Code Online (Sandbox Code Playgroud)