C# 基于对象类型的查询

C# 基于对象类型的查询,c#,linq,C#,Linq,我想根据外部对象类型(不是值)获取对象列表 为了制作示例,我只编写了6个简单的类来模拟我的问题。 简言之,我想让所有用户的活动地点都是学校类型 public class User { public int UserId { get; set; } public Activity Activity{ get; set; } } public class Activity { public int IdActivity { get; set; } public L

我想根据外部对象类型(不是值)获取对象列表

为了制作示例,我只编写了6个简单的类来模拟我的问题。 简言之,我想让所有用户的活动地点都是学校类型

 public class User
{
    public int UserId { get; set; }
    public Activity Activity{ get; set; }
}

public class Activity
{
    public int IdActivity { get; set; }
    public Location Location { get; set; }
}

public abstract class Location
{
    public int IdLocation { get; set; }
    public string Xy { get; set; }
}

public class Indoor : Location
{
    /// props
}

public class External : Location
{
    /// props
}

public class School : Location
{
    /// props
}

只需使用
is
运算符检查位置类型:

users.Where(u => u.School.Location is School)
如果某些活动可能没有位置,则可以使用null条件运算符来避免NullReferenceException:

users.Where(u => u.School?.Location is School)
试试这个:

IEnumerable<User> schoolUsers = myUsers
    .Where(user => user.School.Location is School);
IEnumerable schoolUsers=myUsers
.Where(user=>user.School.Location为学校);

您拼错了学校B和活动属性的适当名称您正在谈论的“外来对象类型(非值)”是什么?您能展示一下您的列表是什么样的吗?如果它只是
List myList
或类似的东西,您是否尝试过使用
.Where(…)
调用?看看LINQ也许:是的,我犯了一些命名错误,正如我提到的,我刚刚在记事本上写了6个类,很抱歉让人困惑,谢谢你的评论我之前的评论,所有的拼写错误都让我困惑:)