从一组对象中加入唯一的字符串

时间:2012-08-31 11:47:24

标签: c# linq c#-4.0

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

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

我想从数组中获取一串唯一元素,与,连接也需要检查字符串是否为nullOrWhiteSpace;

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 个答案:

答案 0 :(得分:10)

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

试试这个:

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

答案 1 :(得分:4)

是的,您可以使用LINQ:

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

答案 2 :(得分:0)

String.Join(",",values.ToList().Distinct(str=>str))

答案 3 :(得分:0)

String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace()))