【发布时间】:2013-10-09 23:40:11
【问题描述】:
假设我们有一个基类 A 和 2 个派生类 B & C。如果我想查询以字符串形式给出的某种类型的实例,我该怎么做?
我想写:
var q = A.OfType<t == "B" ? B : C>()
但这不会编译,我也不想写两个不同的查询:
var q;
if (t == "A") q = A.OfType<B>();
else q = A.OfType<C>();
建议任何人?
【问题讨论】:
-
这不是 LINQ,我的建议是如果你的第二个代码 sn-p 有效,你应该使用它。
-
OfType<>的替代品是.Where(x => x is A) -
泛型在编译时发挥作用,所以当然选项 1 不起作用
-
第二个选项有什么问题?这可能是最好的方法,尽管我会缩短它:
var q = t == "B" ? A.OfType<B>() : A.OfType<C>(); -
我很好奇你想为 q 推断出什么类型。