pen*_*ake 105 c# null element list
在.Net中为C#定义了一个默认方法来删除列表中的所有元素null
吗?
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
Run Code Online (Sandbox Code Playgroud)
让我们说一些参数是null
; 我事先无法知道,我想从列表中删除它们,以便它只包含非null的参数.
Lan*_*nce 207
你可能想要以下内容.
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList.RemoveAll(item => item == null);
Run Code Online (Sandbox Code Playgroud)
Pau*_*les 39
我不知道任何内置方法,但你可以使用linq:
parameterList = parameterList.Where(x => x != null).ToList();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 25
RemoveAll方法应该可以解决这个问题:
parameterList.RemoveAll(delegate (object o) { return o == null; });
Run Code Online (Sandbox Code Playgroud)
Rya*_*ato 12
还有另一个简单而优雅的选择:
parameters.OfType<EmailParameterClass>();
Run Code Online (Sandbox Code Playgroud)
这将删除所有非 type 的元素,EmailParameterClass
这显然会过滤掉任何 type 的元素null
。
这是一个测试:
class Program
{
class Test { }
static void Main(string[] args)
{
var list = new List<Test>();
list.Add(null);
Console.WriteLine(list.OfType<Test>().Count());// 0
list.Add(new Test());
Console.WriteLine(list.OfType<Test>().Count());// 1
Test test = null;
list.Add(test);
Console.WriteLine(list.OfType<Test>().Count());// 1
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
该方法OfType()
将跳过空值:
List<EmailParameterClass> parameterList =
new List<EmailParameterClass>{param1, param2, param3...};
IList<EmailParameterClass> parameterList_notnull =
parameterList.OfType<EmailParameterClass>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
102659 次 |
最近记录: |