让我的LINQ查询返回想要使用的对象类型时遇到了一些问题。我非常接近,只需要一点点输入即可。

我有五个表,对象,人员,位置,集合和CollectionEntries。

对象是人员,位置和集合的基类。集合具有许多CollectionEntries,其中可能包含“人物”,“位置”和“集合”的条目。

给定一个特定的集合,我想编写LINQ查询以检索该集合中的People。

到目前为止,我已经有了它,它向我返回了CollectionEntries的列表(它们对应于People条目,是的!),但是我希望它返回People的实例。

var people = collection.CollectionEntries.Where(
  entry => entry.Object is Person ).ToList();


我尝试这样做:

var people = collection.CollectionEntries.Where(
  entry => entry.Object is Person ).OfType<Person>().ToList();


但它不返回任何东西。关于如何从我的收藏中获取人物列表的任何建议?

最佳答案

尝试:

var people = collection.CollectionEntries.Where( entry => entry.Object is Person )
                                         .Select(entry => (Person)entry.Object)
                                         .ToList();


要么

var people = collection.CollectionEntries.Where( entry => entry.Object is Person )
                                         .Select(entry => entry.Object)
                                         .Cast<Person>()
                                         .ToList();


它们都应与您的示例一起使用。

关于c# - 多态LINQ查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3285209/

10-13 00:33