将一个字符串拆分成一个唯一的列表 - 重构这个

Voo*_*ild 3 c# string refactoring

好吧,这看起来很难看:)重构这段代码的好方法是什么?

Users 是在屏幕上输入的数据,对于这个例子,我们希望得到不同的结果 _someDTOObject.Users

string[] userNames = Users.Split(new char[] { ',' });
string tempUserStr = "";
foreach (string user in userNames)
{
    tempUserStr += user.Trim().ToUpper() + ",";
}

userNames = tempUserStr.Split(new char[] { ',' });
var uniqueUsers = userNames.Distinct().ToList();

foreach (string user in uniqueUsers)
{
    if (!string.IsNullOrEmpty(user))
    {
        _someDTOObject.Users += user + ",";
    }   
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

它看起来就像你可能想是这样的:

_someDTOObject.Users = string.Join(",", Users.Split(',')
                                             .Select(x => x.Trim().ToUpper())
                                             .Distinct());
Run Code Online (Sandbox Code Playgroud)

...但我不清楚你为什么要通过分割/加入/拆分开始...

注意:如果您使用的是.NET 3.5,那么ToArray之后您将需要额外的呼叫Distinct.你没有在.NET 4上,因为string.Join增加了一组重载.

(正如StriplingWarrior的回答所述,这里没有逗号.你想要一个尾随的逗号吗?)