Linq多次选择查询与Distinct

时间:2014-03-16 07:59:01

标签: c# linq entity-framework

我有以下型号:

public class Person
{
    public string fullName { get; set; }
    public virtual ICollection<Hobby> hobbies { get; set; }
    public virtual Location location { get; set; }
}

public class Hobby
{
    public string hobbyName { get; set; }
    public virtual ICollection<Person> people { get; set; }           
}

public class Location
{
   public string locationName { get; set; }
   public virtual ICollection<Person> People { get; set; }
}

一个人可以有很多爱好,副Versa,一个人可以有一个位置。

我想查询一个给定位置返回该位置人员的所有不同爱好

所以如果位置是&#34;达拉斯&#34;,找到达拉斯的所有人,返回他们所有的爱好,并删除重复。

2 个答案:

答案 0 :(得分:2)

您可以尝试这种方式:

var hobbies = (from h in hobbies
                where h.people.Any(p => p.location.locationName == "Dallas")
                select h);

答案 1 :(得分:0)

您可以使用FK很好地表示关系,因此您可以像这样简化查询:

from p in persons 
Where p.location.locationName = "London"
select new 
{
    person = p,
    hobbies = p.hobbies
}