【问题标题】:how to get all non null values from array in c# [duplicate]如何从c#中的数组中获取所有非空值[重复]
【发布时间】:2019-12-18 19:34:59
【问题描述】:

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

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

【问题讨论】:

  • string.Join(rm.Where(T => T != null), ":")
  • using System.Linq; var filtered = rm.Where( elem => ! string.IsNullOrEmpty(elem)) 过滤到您要打印的内容,然后使用 string.Join。
  • 您是否正在专门寻找 linq 解决方案?你试过使用循环吗?
  • @AgentFire 先是分隔符,然后是集合;)

标签: c# .net linq


【解决方案1】:

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

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

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

如果你想像你的例子一样加入他们,你可以像这样使用String.Join(@AgentFire 在他的评论中有一个错误,因为这个方法实际上首先使用分隔符,然后是值):

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

【讨论】:

    【解决方案2】:

    如果你想使用循环,它会是你的解决方案:

    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);
    

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 2018-07-05
      • 2012-12-27
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 2019-08-03
      • 2010-10-24
      相关资源
      最近更新 更多