【问题标题】:Join unique strings from an array of objects连接对象数组中的唯一字符串
【发布时间】:2012-08-31 11:47:23
【问题描述】:

我有一个包含字符串的对象数组。

var values = new object[5];
values[0] = "PIZZA HUT";
values[1] = "ISLAMABAD";
values[2] = "ISLAMABAD";
values[3] = "PAKISTAN";
values[4] = "PAKISTAN";

我想从数组中获取一串唯一元素,加入,还需要检查字符串是否为isNullOrWhiteSpace;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

目前我正在做以下事情。但是您可以看到它需要在 if 语句中进行大量检查。我想知道是否有使用 LINQ 的更好方法

string featureName = values[0] as string;
string adminboundry4 = values[1] as string;
string adminboundry3 = values[2] as string;
string adminboundry2 = values[3] as string;
string adminboundry1 = values[4] as string;


if (!string.IsNullOrWhiteSpace(adminboundry4) 
   && adminboundry4 != adminboundry1 
   && adminboundry4 != adminboundry2 
   && adminboundry4 != adminboundry3) //want to get rid of these checks
                featureName += "," + adminboundry4;

if (!string.IsNullOrWhiteSpace(adminboundry3)) //Not checking for duplicate here just for this question
                featureName += "," + adminboundry3;

if (!string.IsNullOrWhiteSpace(adminboundry2)) //Not checking for duplicate here just for this question
                featureName += "," + adminboundry2;

if (!string.IsNullOrWhiteSpace(adminboundry1)) //Not checking for duplicate here just for this question
                featureName += "," + adminboundry1;

featureName 包含PIZZA HUT, ISLAMABAD, PAKISTAN, PAKISTAN

【问题讨论】:

  • 这就是我想要最小化的

标签: c# linq c#-4.0


【解决方案1】:

您可以使用string.Join() 方法从对象数组中获取数组不同的字符串元素。

试试这个:

var Result = string.Join(",", values.Cast<string>()
                                 .Where(c => !string.IsNullOrWhiteSpace(c))
                                 .Distinct());

【讨论】:

  • 这正是我要找的,让我试试
  • +1 包括IsNullOrWhiteSpace 检查的唯一答案(到目前为止)。
【解决方案2】:

是的,您可以使用 LINQ:

var featureName = String.Join(
  ",",
  values
    .Cast<String>()
    .Where(s => !String.IsNullOrWhiteSpace(s))
    .Distinct()
);

【讨论】:

  • 我还需要检查空格或空字符串
【解决方案3】:
String.Join(",",values.ToList().Distinct(str=>str))

【讨论】:

  • 我还需要检查空格或空字符串
【解决方案4】:
String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace()))

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多