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所指出的,返回匿名类型的枚举是有意义的,其中返回类型的每个属性都是为枚举中的所有项定义的