我试图执行下面的代码,它工作正常,如果myObject是!= null,但如果myObject为null则抛出“值不能为空”错误。理想情况下,如果myObject的为null,则我想只是有HashSet的有0Hashset“值不能为空”错误
var ids = new HashSet<int>(myObject.Select(p => p.ID));
我已经尝试了一些不同的东西一个值。我不确定为什么我认为这会起作用。
var ids = new HashSet<int>(myObject.Select(p => p.ID).Where(p => p != null));
和这似乎应该工作。
var ids = new HashSet<int>(myObject.Select(p => (p == null) ? 0 : p.ID));
最后这个工作,但它似乎有一个更好的方法。
var ids = new HashSet<int>(myObject!= null ? myObject.Select(p => p.ID) : new int[] {0});
任何人都有更好的方法来做到这一点?
你以为我牺牲可读性紧凑?我看着它,这是有道理的,但其他人会看到这行代码,并发现它太过复杂? – Jay 2012-07-24 13:31:43