有没有一种巧妙的方法可以忽略 Linq 中的异常?即,假设我有一个ObjectA
在其构造函数中接受字符串参数的类,并且在构造函数中进行了一些验证 - 这意味着如果字符串没有正确的格式,构造函数将抛出。通过以下代码,我将从ObjectA
字符串列表中获取一个 List :
var result = new List<ObjectA>();
foreach (string _s in ListOfFiles) {
try {
ObjectA _A = new ObjectA(_s);
result.Add(_A);
}
catch{}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:是否有一行 linq 方式,一个 la(出现伪代码......)
var result = ListOfFiles.Select(n => try {new ObjectA(n)}).ToList();
Run Code Online (Sandbox Code Playgroud)
考虑到您正在使用Linq to objects
,您可以尝试使用方法中的范围Select()
和 aWhere()
来过滤空输出:
var result = ListOfFiles.Select(_s =>
{
try
{
return new ObjectA(_s);
}
catch (Exception)
{
return null;
}
}).Where(x => x != null).ToList();
Run Code Online (Sandbox Code Playgroud)
使用这样的策略对于 linq to object 来说效果很好,但是 linq to sql 则不然,因为,你自己想想,你会如何将它解析为 SQL?有一个简单的方法可以做到这一点。