C# linq-检索依赖于对象类型的数据
我有一个这样的结构C# linq-检索依赖于对象类型的数据,c#,linq,C#,Linq,我有一个这样的结构 public class ItemBase { public int ItemId { get; set; } public DateTime Created { get; set; } public ItemType Type { get; set; } } public class RockItem : ItemBase { } public class PlantItem : ItemBase { public bool Is
public class ItemBase
{
public int ItemId { get; set; }
public DateTime Created { get; set; }
public ItemType Type { get; set; }
}
public class RockItem : ItemBase { }
public class PlantItem : ItemBase
{
public bool IsDeadly { get; set; }
}
public class AnimalItemBase : ItemBase
{
public int NumberOfLegs { get; set; }
public bool IsDeadly { get; set; }
}
public class DogItem : AnimalItemBase { }
public class CatItem : AnimalItemBase { }
数据库中有一个类型标志,我使用Fluent对类型进行拆分,并返回一个IEnumerable
这适用于我想要的大部分内容,但现在我需要将这些项目融合在一起。例如,我希望在匿名对象中返回
ItemId
,isdaddy
,以及NumberOfLegs
。结果必须在一个列表中的Created
字段中进行排序。有没有一种简单的方法可以让linq做到这一点?理想情况下,我不必将它们拆分、合并结果,然后进行排序。您给出的示例可以使用of type解决:
IEnumerable<ItemBase> items = ...
var results = items.OfType<AnimalItemBase>()
.OrderBy(x => x.Created).ToList();
正如@Henk Holterman所指出的,返回匿名类型的枚举是有意义的,其中返回类型的每个属性都是为枚举中的所有项定义的。您给出的示例可以使用类型的来解决:
IEnumerable<ItemBase> items = ...
var results = items.OfType<AnimalItemBase>()
.OrderBy(x => x.Created).ToList();
正如@Henk Holterman所指出的,返回匿名类型的枚举是有意义的,其中返回类型的每个属性都是为枚举中的所有项定义的