У меня есть заявление LINQ, которое я пытаюсь выяснить - я относительно новичок в этом, поэтому, пожалуйста, извините за мое невежество. Я хочу вернуть список людей, каждый из которых имеет список интересов.
Таблица person (p) присоединяется к таблице personperson (pi) с помощью p.id = pi.personid
Таблица личных интересов объединяется с таблицей интересов (i), pi.interestid - i.id.
public class Persons
{
public int Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
...
public IList<Interest> PersonInterests { get; set; }
}
public class Interest
{
public string InterestName { get; set; }
}
Класс, который я возвращаю, - это человек, каждый со своим списком PersonInterests, заполненным 0 и многими интересами. Ниже приведенное ниже утверждение Linq возвращает данные, но каждая запись о человеке получает только один интерес, а лица с несколькими интересами дублируют свои данные, как показано под оператором linq
var interests = _db.Interests;
return (from p in _db.People
join i in _db.PersonInterests on p.Id equals i.PersonId
join s in _db.Interests on i.InterestId equals s.Id
select new Persons{
Id = p.Id,
FirstName = p.FirstName,
LastName = p.LastName,
Age = p.Age,
Address = p.Address,
City = p.City,
StateAbbrev = p.StateAbbrev,
ZipCode = p.ZipCode,
PersonInterests = (from r in interests where r.Id == i.InterestId select r).ToList()
}).ToList();
Результаты:
{"id":1,"lastName":"Alexander","firstName":"Carson","age":23,"address":"123 4th Street","city":"Jamestown","stateAbbrev":"NV","zipCode":"65465","personInterests":[{"id":1,"interestName":"Basketball"}],"photo":null}
{"id":1,"lastName":"Alexander","firstName":"Carson","age":23,"address":"123 4th Street","city":"Jamestown","stateAbbrev":"NV","zipCode":"65465","personInterests":[{"id":2,"interestName":"Camping"}],"photo":null},
Вместо этого я хотел бы, чтобы данные выглядели так:
{"id":1,"lastName":"Alexander","firstName":"Carson","age":23,"address":"123 4th Street","city":"Jamestown","stateAbbrev":"NV","zipCode":"65465","personInterests":[{"id":1,"interestName":"Basketball"}, {"id":2,"interestName":"Camping"}],"photo":null}
Я боролся с этим некоторое время, любая помощь очень ценится.