因此,我有一个列表,其中包含一些数据,例如输入路径,输出路径以及列标题。可以看出有六个列标题,但是有些列标题可能为空,因为不必使用它们。因此,我创建了一种过滤数据的方法,以便仅保留有用的数据。
List<string> data = new List<string> { "C:/", "C:/Documents", "Hello", Goodbye". null, null, null, null } // Data to be passed into method
List<string> filteredData = new List<string>();
public void FilterData(List<string> data)
{
foreach (var d in data)
{
if (d != null || d != String.Empty)
{
filteredData.Add(d);
}
}
}
为什么当我将列表data
传递给此方法时,没有任何数据被过滤,因此filteredData
将包含与data
相同的内容,但是当我使用以下命令时(如果语句仅计算不为null的值)是否可以正确过滤?
public void FilterData(List<string> data)
{
foreach (var d in data)
{
if (d != null)
{
filteredData.Add(d);
}
}
}
谢谢
答案 0 :(得分:1)
您:
if (d != null || d != String.Empty)
这总是正确的,因为d
不能同时为null
和""
;它必须与至少其中之一不同。
一些正确的选择:
if (d != null && d != "")
if (!(d == null || d == ""))
if (!string.IsNullOrEmpty(d))
答案 1 :(得分:1)
问题是当您应该使用逻辑与时,您正在使用逻辑或。
您只想在不为空且不为空的情况下添加它。
顺便说一句:有一种更简单的方法:
foreach (var d in data)
{
if (!String.IsNullOrEmpty(d))
{
....