我有一个类属性: -
public List<string> szTypeOfFileList{get;set;}
顾名思义,该属性存储用户对感兴趣文件类型(.txt,.doc,.rtf,.pdf等)的选择。
我正在尝试评估是否有方法可以优化此List,因为它正在由用户条目填充,或者,如果我应该等待所有条目,然后调用单独的方法来优化属性。
我的意思是,让我们说特定的用户输入是&#34; .doc / .docx&#34;。目前,这将作为单个字符串项存储在List中。但是我希望它分别存储为两个项目。这将使代码保持在一个位置,并且不会影响未来的模块等。
private List<string> _szTypeOfFileList = new List<string>();
public List<string> szTypeOfFileList
{
get
{
return _szTypeOfFileList;
}
set
{
// Some kind of validation/refining method here ?? //
}
}
修改: -
因为我的FileTypeList来自checkboxList,所以我不得不使用与我接受的答案不同的方法(这使我指向正确的方向)。
foreach (object itemchecked in FileTypeList.CheckedItems)
{
string[] values = itemchecked.ToString().Split('/');
foreach(var item in values)
TransactionBO.Instance.szTypeOfFileList.Add(item);
}
我的代码的这部分在传递给Business类之前在UI类中。
答案 0 :(得分:1)
如果您知道它将始终用“/”字符拆分,只需在字符串上使用拆分即可。包括一些简单的验证以防止明显的重复,您可以采取以下措施:
string[] values = x.Split('/');
foreach (string val in values) {
if (!_szTypeOfFileList.Contains(val.ToLower().Trim())) {
_szTypeOfFileList.Add(val.ToLower().Trim());
}
}
如果您需要考虑该点中的多个字符,您还可以使用一个字符数组代替'/'进行拆分。
答案 1 :(得分:1)
我会考虑将List
更改为更通用的内容。他们真的需要一个List ......还是一个集合?阵列?可数? (阅读this link)
第二,在您的Set
方法中,您想要接受他们的输入,将其分解并添加。问题出现了:列表是最好的方法吗?
重复数据怎么样?你刚刚再添加一次吗?你需要搜索它才能弄清楚你是否要添加它?
考虑字典或散列表,或任何可以帮助您处理数据的集合类型。我会读一读:this question(哦,我的......错误的链接......虽然没有人抱怨......提供链接...... :)
答案 2 :(得分:0)
var extensions = userInput.Split('/').ToList();