在 Linq 查询中尝试

Elu*_*FTW 5 c# linq exception

有没有一种巧妙的方法可以忽略 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)

Fel*_*ani 4

考虑到您正在使用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?有一个简单的方法可以做到这一点。