我有一个IQueryable<int>
和一个IQueryable<int?>
,在处理的较早阶段已使用Where()
从中删除了空值。我现在希望在两个可查询对象之间执行UNION()
,但由于一个是可空类型,而另一个不是我不能。
我该如何解决?
答案 0 :(得分:5)
如果您的IQueryable<int?>
对象没有null,那么您应该可以使用.Select()调用将其“转换”为IQueryable<int>
。
int?[] withNulls = new int?[] { 1, null, 0, 2, 3, 4, null, 1, 6 };
int[] noNulls = new int[] { 10, -4, 30, 6, 7, 8, -2, -3 };
// This is the step you need.
var removedNulls = withNulls.AsQueryable().Where(n => n.HasValue).Select(n => n.Value);
var union = removedNulls.Union(noNulls);
打印removedNulls
和union
给我
1 0 2 3 4 1 6
1 0 2 3 4 6 10 -4 30 7 8 -2 -3
答案 1 :(得分:3)
您可以仅使用Select
和Value
投射它们。
queryable.Select(i => i.Value)