6

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

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

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

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

4

4 回答 4

16

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

试试这个:

var Result = string.Join(",", values.Cast<string>()
                                 .Where(c => !string.IsNullOrWhiteSpace(c))
                                 .Distinct());
于 2012-08-31T11:48:31.603 回答
4

是的,您可以使用 LINQ:

var featureName = String.Join(
  ",",
  values
    .Cast<String>()
    .Where(s => !String.IsNullOrWhiteSpace(s))
    .Distinct()
);
于 2012-08-31T11:48:17.197 回答
0
String.Join(",",values.ToList().Distinct(str=>str))
于 2012-08-31T11:48:30.473 回答
0
String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace()))
于 2012-08-31T11:50:55.950 回答