Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以列表作为属性从列表中选择_C#_Linq_List - Fatal编程技术网

C# 以列表作为属性从列表中选择

C# 以列表作为属性从列表中选择,c#,linq,list,C#,Linq,List,我试图找出从包含子列表的列表中进行选择的最有效的方法。 我有两门课: public class Person { public string FirstName { get; set; } public string LastName { get; set; } public List<Services> Services { get; set; } } public class Services { public int Id; publi

我试图找出从包含子列表的列表中进行选择的最有效的方法。 我有两门课:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<Services> Services { get; set; }
}

public class Services
{
    public int Id;
    public string Name;
}
公共类人物
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共列表服务{get;set;}
}
公共课服务
{
公共int Id;
公共字符串名称;
}
然后我有一个方法:

       public static List<Person> GetPeople()
        {
           List <Services> serviceList1 = new List<Services>();
           List <Services> serviceList2 = new List<Services>();
           var service = new Services
               {
                   Id = 1,
                   Name = "Service 1"
               };

           serviceList1.Add(service);

           service = new Services
               {
                   Id = 2,
                   Name = "Service 2"
               };
           serviceList1.Add(service);

           service = new Services
               {
                   Id = 3,
                   Name = "Service 3"
               };
           serviceList2.Add(service);

           service = new Services
               {
                   Id = 4,
                   Name = "Service 4"
               };
           serviceList2.Add(service);

           List<Person> people = new List<Person>();
           var person = new Person
               {
                   FirstName = "Bill",
                   LastName = "Murray",
                   Services = serviceList1
               };
           people.Add(person);

           person = new Person
           {
               FirstName = "Chevy",
               LastName = "Chase",
               Services = serviceList2
           };
           people.Add(person);

           return people //Where Service Id = 3
        }
公共静态列表GetPeople()
{
列表服务列表1=新列表();
列表服务列表2=新列表();
var服务=新服务
{
Id=1,
Name=“服务1”
};
serviceList1.Add(服务);
服务=新服务
{
Id=2,
Name=“服务2”
};
serviceList1.Add(服务);
服务=新服务
{
Id=3,
Name=“服务3”
};
serviceList2.Add(服务);
服务=新服务
{
Id=4,
Name=“服务4”
};
serviceList2.Add(服务);
列表人员=新列表();
var person=新的人
{
FirstName=“比尔”,
LastName=“Murray”,
服务=服务列表1
};
人。添加(人);
人=新人
{
FirstName=“雪佛兰”,
LastName=“Chase”,
服务=服务列表2
};
人。添加(人);
返回人员//其中服务Id=3
}
我想返回人员列表,其中每个项目都包括服务3作为服务。
我应该使用SelectMany还是where子句。我似乎不太明白。

如果你把它拼出来,你应该差不多在那里了: 查找具有id为3的服务的所有用户

return people.Where(p => p.Services.Any(s => s.Id == 3)).ToList();

如果你说清楚了,你应该差不多在那里了: 查找具有id为3的服务的所有用户

return people.Where(p => p.Services.Any(s => s.Id == 3)).ToList();

您可以使用以下选项:

return people.Where(p => p.Services.Any(service => service.Id == 3)).ToList();

您可以使用以下选项:

return people.Where(p => p.Services.Any(service => service.Id == 3)).ToList();