如何从C#中的数组获取所有非null值

时间:2019-08-12 08:00:52

标签: c# .net linq

我正在从包含空值的数组中打印所有非空值。我只想打印非null值

string a = "welcome";

var rm = new string [] {null,"hai",null,"15"};

Console.WriteLine("{0}",!String.IsNullOrEmpty(rm[0])? a 
:!String.IsNullOrEmpty(rm[1]) ? a +":"+ rm[1] : 
!String.IsNullOrEmpty(rm[2]) ? a +":"+ rm[1]+ ":"+rm[2] : a +":"+ rm[1]+ 
":"+rm[2]+":"+rm[3] ); 

实际输出:welcome:hai

预期产量:welcome:hai:15

2 个答案:

答案 0 :(得分:2)

您可以使用Where方法来获得和IEnumerable代表所有非空和非空值。

您的数组称为rm,因此您可以像这样获得IEnumerable

IEnumerable<string> nonNullNonEmptyValues = rm.Where(e => !String.IsNullOrEmpty(e));

如果您希望像示例中那样加入它们,则可以这样使用String.Join(@AgentFire的注释中有错误,因为此方法实际上首先使用分隔符,然后是值):

String joined = String.Join(":", nonNullNonEmptyValues);

答案 1 :(得分:1)

如果要使用循环,它将为您提供解决方案:

string a = "welcome";

var rm = new string [] {null,"hai",null,"15"};
for(int i = 0; i < rm.Length; i++)
{
  if(!string.IsNullOrWhitespace(rm[i])
    a += ":" + rm[i];
}
Console.WriteLine(a);