【发布时间】:2013-04-27 21:55:40
【问题描述】:
我正在寻找一种方便的方法来删除以空字符串为值的列表项。
我知道我可以在加载到列表之前检查每个字符串是否为空。
List<string> items = new List<string>();
if (!string.IsNullOrEmpty(someString))
{
items.Add(someString);
}
但是,这似乎有点麻烦,特别是如果我有很多字符串要添加到列表中。
或者,我可以加载所有字符串,无论是否为空:
List<string> items = new List<string>();
items.Add("one");
items.Add("");
items.Add("two")
然后遍历列表,如果找到一个空字符串,则将其删除。
foreach (string item in items)
{
if (string.IsNullOrEmpty(item))
{
items.Remove(item);
}
}
这是我仅有的两个选择,也许 Linq 有什么东西?
感谢您对此的任何帮助。
【问题讨论】:
-
为什么您认为在添加之前检查空字符串很麻烦?如果您正在创建此列表,那么您可以完全控制其中的内容 - 为什么要在事后过滤它?
-
稍后删除空元素的麻烦在于
.Remove强制复制跟随元素的所有元素向下删除一个索引位置。所以,如果有很多字符串,你最好创建一个没有那些空元素的新列表。但是,那为什么不应该把那些空元素都省略掉呢? -
@ChrisMcAtackney 所以我会得到这样的结果: if(!string.IsNullOrEmpty(string1)) items.Add(string1); if (!string.IsNullOrEmpty(string2)) items.Add(string2); if (!string.IsNullOrEmpty(string3)) items.Add(string3);还是我错过了更优雅的方式?
-
使用方法:AddString(IList aList, String aString)
-
@JeffRSon 这就是您的建议:pastebin.com/A5cBraQL 我无法将 List 设为类变量。