Я работаю над этим запросом, это занимает у меня некоторое время, поскольку я довольно новичок в Linq.Linq Querying On Collection атрибуты и соответствие всем детям
У меня есть две коллекции c.l.ChoreTIs
и c.r.ChoreTIs
.
Я хочу получить все, где c.l.Chore.TIs.Name == c.r.ChoreTIs.Name
, а не ВСЕХ из их параметров (детей) на parameterValue
.
Я довольно близко, но все еще есть некоторые проблемы
Dim Query = From l In c.l.ChoreTIs _
Join r In c.r.ChoreTIs On l.Name Equals r.Name _
Where (l.Parameters.All(Function(lp) r.Parameters.Any(Function(rp) lp.parameterValue = rp.parameterValue)))
Select New With {.lChore = l, .rChore = r}
Запрос работает, но я получаю все ChoreTIs
, которые соответствуют имя, даже если не все Parameters.parameterValue
матч. Мне нужно вернуть все, где НЕ точно совпадают.
Я хочу только те ChoreTI, которые соответствуют имени, но у них нет точно такого же количества детей (параметры) или один параметр имеет другой parameterValue
.
Есть ли лучший способ сделать это? или как я могу это исправить?
Приветствие
UPDATE:
Dim Query = From l In c.l.ChoreTIs _
Join r In c.r.ChoreTIs On l.Name Equals r.Name _
Where (l.Parameters.Count <> r.Parameters.Count) Or _
((l.Parameters.Count = r.Parameters.Count) And
(l.Parameters.Select(Function(lp) lp.parameterValue).Except(r.Parameters.Select(Function(rp) rp.parameterValue)).Any()))
Select New With {.lChore = l, .rChore = r}
Я получил его на работу, но я бы до сих пор увлечен, если кто-то есть лучший способ сделать это.
Вы хотите, чтобы все 'ChoreTIs' как из' cl * 'и' cr * ', так и из одного или другого? – Enigmativity
Я хотел бы, чтобы они были двумя, как в двух объектах слева и справа, как select l, c таким образом я мог бы манипулировать двумя из них. Благодаря! – DataAnalyst1