好吧,这看起来很丑 :) 重构这段代码的好方法是什么?
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 + ",";
}
}
最佳答案
看起来您可能想要这样的东西:
_someDTOObject.Users = string.Join(",", Users.Split(',')
.Select(x => x.Trim().ToUpper())
.Distinct());
...但我不清楚您为什么要通过拆分/加入/拆分开始...
注意:如果您使用的是 .NET 3.5,则需要在 Distinct
之后调用额外的 ToArray
。你不需要在 .NET 4 上,因为 string.Join
重载集已经增加。
(如 StriplingWarrior 的回答所述,这不会有尾随逗号。您想要尾随逗号吗?)
关于c# - 将一个字符串拆分成一个唯一的列表——重构它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085195/