搜索多种类型对象的数组
Search on array of multiple type objects
我有以下场景,其中我有 main class abc 具有对象数组或另一个 objects/classes。
我的问题是如何使用项目 属性.
在 class ABC 上按名称搜索
项目可以有任何对象,要么是 OR 要么是 DT。
class abc
{
[System.Xml.Serialization.XmlElementAttribute("OR", typeof(OR))]
[System.Xml.Serialization.XmlElementAttribute("DT", typeof(DT))]
public object[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
public class OR
{
public string name;
}
public class DT
{
public string name;
}
我找到了解决方案
var data = from s in abc
from i in s.Items
select
new
{
objType = i.GetType() == typeof(OR)
? ((OR)i).name : i.GetType() == typeof(DT)
? ((DT)i).name : string.Empty,
objAbc = s
};
IEnumerable<abc> data = journey.Where(x => x.objType.Contains("myname")).Select(y => y.objAbc).ToList();
从具有名称 属性 的 interface/abstract 基础 class 派生您的 classes 并制作 abc class 的项目 属性 ] 该类型的数组...如果您将来添加另一个 class,您的代码将会中断(如果 else 中检查类型会破坏 SOLID 中的 Open Close 原则)
我有以下场景,其中我有 main class abc 具有对象数组或另一个 objects/classes。 我的问题是如何使用项目 属性.
在 class ABC 上按名称搜索项目可以有任何对象,要么是 OR 要么是 DT。
class abc
{
[System.Xml.Serialization.XmlElementAttribute("OR", typeof(OR))]
[System.Xml.Serialization.XmlElementAttribute("DT", typeof(DT))]
public object[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
public class OR
{
public string name;
}
public class DT
{
public string name;
}
我找到了解决方案
var data = from s in abc
from i in s.Items
select
new
{
objType = i.GetType() == typeof(OR)
? ((OR)i).name : i.GetType() == typeof(DT)
? ((DT)i).name : string.Empty,
objAbc = s
};
IEnumerable<abc> data = journey.Where(x => x.objType.Contains("myname")).Select(y => y.objAbc).ToList();
从具有名称 属性 的 interface/abstract 基础 class 派生您的 classes 并制作 abc class 的项目 属性 ] 该类型的数组...如果您将来添加另一个 class,您的代码将会中断(如果 else 中检查类型会破坏 SOLID 中的 Open Close 原则)