linq - 有没有办法将类型动态分配给通用 linq 表达式?
问题描述
当子类型仅在运行时已知时,有没有办法从特定子类型的集合中获取对象?就像是:
class A
{}
class B : A
{}
class C : A
{}
Main()
{
List<A> outsideList = new List<A>() {new A(), new B(), new C()};
foreach(var ojb in outsideList)
{
dosomethingwithanobject(ojb);
}
}
void dosomethingwithanobject(A obj)
{
List<A> intenalList = new List<A>() { new C(), new A(), new B()};
// this can be A, B or C
type DESIREDTYPE = typeof(obj);
var item = list.GetSubType<DESIREDTYPE>().FirstOrDefault();
// do something with the item
}
解决方案
我认为您可以使用以下代码:
var result = intenalList.Where(x => x.GetType() == obj.GetType()).FirstOrDefault();
推荐阅读
- android - 如何设置图像宽度以占用 ConstraintLayout 中的一半空间
- android - 尝试通过 Android 代码设置权重
- laravel - 仅在非 www 上强制 HTTPS
- python - Python - 如何从列表中提取文本
- angular-cli - Angular 6 CLI 未注册服务工作者
- javascript - 如何使用 webgl 和 glMatrix 围绕世界轴旋转对象
- android - AdMob 未显示。没有足够的空间来展示广告(片段文件)
- javascript - 在传递参数时反应未定义的“匹配”
- python - 如何应用多个分组条件对熊猫数据框中的列执行操作?
- c# - C#:在 XML 中获取子元素值的集合?