让我的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/