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)
它看起来就像你可能想是这样的:
_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的回答所述,这里没有逗号.你想要一个尾随的逗号吗?)