Я пытаюсь перебрать два моих запроса LINQ, используя шаблон вложенного цикла foreach, а затем добавить элементы в KeyValuePair
экземпляр списка:
LINQ-запросов:
var nameQuery = org.deltagerRelation
.SelectMany(r => r.Deltager ?? new List<Deltager>())
.Where(a => a.Enhedstype != null && a.Enhedstype == "PERSON")
.SelectMany(d => d.Navne)
.Select(n => n.Navn);
var boardMembersQuery = org.deltagerRelation
.SelectMany(o => o.Organisationer ?? new List<Organisationer>())
.SelectMany(m => m.MedlemsData)
.SelectMany(a => a.Attributter)
.SelectMany(v => v.Vaerdier)
.Where(v => v.Vaerdi != null && v.Vaerdi == "BESTYRELSE")
.Select(v => v.Vaerdi);
И вывод, который я получаю, как и ожидалось, nameQuery
возвращает два имени, а boardMembersQuery
возвращает двух членов правления.Однако, когда я запускаю их через вложенный цикл foreach, например, так:
foreach(var name in nameQuery)
{
foreach(var boardMember in boardMembersQuery)
{
result.BoardMembers.Add(new KeyValuePair<string, JToken>(name, boardMember));
}
}
Каждое из значений запроса добавляется в список два раза, и в результате получается четыре пары ключ / значение вместо двух.Неправильно ли реализован шаблон для каждого цикла или что-то еще пропущено?