让我的 LINQ 查询返回我想要使用的对象类型时有点问题。我非常接近,只需要一点输入。
我有五个表,Objects、People、Locations、Collections 和 CollectionEntries。
Object 是 People、Locations 和 Collections 的基类。集合有许多集合条目,其中可能包含人物、位置和集合的条目。
给定一个特定的集合,我想编写 LINQ 查询来检索该集合中的人员。
到目前为止,我已经有了这个,它返回了一个 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/