Окончательный ответ, который я ожидаю, должен выглядеть так:
[
{
"ID": 4,
"Floor": "BackOffice Floor",
"OverallDescription": "Pretty Pretty Good",
"Permit": "Admin",
"TabOne": [
{
"Color": "Blue",
"status": "ReadWrite"
},
{
"Color": "Purple",
"status": "ReadOnly"
},
],
"TabTwo": [
{
"Color": "Black",
"status": "Offline"
},
{
"Color": "Green",
"status": "Online"
},
{
"Color": "White",
"status": "Blinking"
},
],
}
]
Я смоделировал для этого класс следующим образом:
public class AllSheets
{
// from parent calss
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string OverallDescription { get; set; } = string.Empty;
public string Permit { get; set; } = string.Empty;
// from children classes
public IEnumerable TabOne { get; set; } = Enumerable.Empty();
public IEnumerable TabTwo { get; set; } = Enumerable.Empty();
}
И вот эти три класса: один родительский, а два других — дочерние. Их JOIN находится в поле ID.
public class SheetMain
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string OverallDescription { get; set; } = string.Empty;
public string Permit { get; set; } = string.Empty;
}
public class SheetChildOne
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string Color { get; set; } = string.Empty;
public string Status { get; set;} = string.Empty;
}
public class SheetChildTwo
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string Color { get; set; } = string.Empty;
public string Status { get; set;} = string.Empty;
}
Обратите внимание, что я не хочу повторять некоторые поля, которые являются общими как для дочернего, так и для родительского элемента, например ID и Floor.
Я смог начать писать это сам, но мне нужна была помощь в двух вещах:
1. Как я могу это сделать? в моем запросе более одного объединения групп, поэтому я могу также включить SheetChildTwo.
2. Как я могу сказать, что НЕ следует включать некоторые из повторяющиеся поля, которые являются как родительскими, так и дочерними, например ID и Floor в этом примере.
Вот что я пробовал:
var result =
sheetMain.GroupJoin
(sheetChildOne,
work1 => work1.ID,
work2 => work2.ID,
(t1, t2) => new AllSheets
{
ID = t1.ID,
Floor = t1.Floor,
OverallDescription = t1.OverallDescription,
Permit = t1.Permit,
TabOne = t2.Select
(b => new SheetChildOne
{
Color = b.Color,
Status = b.Status,
}
)
}
);
Подробнее здесь: https://stackoverflow.com/questions/771 ... ts-in-linq
Объединение нескольких JOIN или GroupJOIN в разные наборы данных в LINQ. ⇐ C#
Место общения программистов C#
1719258050
Anonymous
Окончательный ответ, который я ожидаю, должен выглядеть так:
[
{
"ID": 4,
"Floor": "BackOffice Floor",
"OverallDescription": "Pretty Pretty Good",
"Permit": "Admin",
"TabOne": [
{
"Color": "Blue",
"status": "ReadWrite"
},
{
"Color": "Purple",
"status": "ReadOnly"
},
],
"TabTwo": [
{
"Color": "Black",
"status": "Offline"
},
{
"Color": "Green",
"status": "Online"
},
{
"Color": "White",
"status": "Blinking"
},
],
}
]
Я смоделировал для этого класс следующим образом:
public class AllSheets
{
// from parent calss
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string OverallDescription { get; set; } = string.Empty;
public string Permit { get; set; } = string.Empty;
// from children classes
public IEnumerable TabOne { get; set; } = Enumerable.Empty();
public IEnumerable TabTwo { get; set; } = Enumerable.Empty();
}
И вот эти три класса: один родительский, а два других — дочерние. Их JOIN находится в поле ID.
public class SheetMain
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string OverallDescription { get; set; } = string.Empty;
public string Permit { get; set; } = string.Empty;
}
public class SheetChildOne
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string Color { get; set; } = string.Empty;
public string Status { get; set;} = string.Empty;
}
public class SheetChildTwo
{
public int ID { get; set; }
public string Floor { get; set; } = string.Empty;
public string Color { get; set; } = string.Empty;
public string Status { get; set;} = string.Empty;
}
Обратите внимание, что я не хочу повторять некоторые поля, которые являются общими как для дочернего, так и для родительского элемента, например ID и Floor.
Я смог начать писать это сам, но мне нужна была помощь в двух вещах:
[b]1.[/b] Как я могу это сделать? в моем запросе более одного объединения групп, поэтому я могу также включить SheetChildTwo.
[b]2.[/b] Как я могу сказать, что НЕ следует включать некоторые из повторяющиеся поля, которые являются как родительскими, так и дочерними, например ID и Floor в этом примере.
Вот что я пробовал:
var result =
sheetMain.GroupJoin
(sheetChildOne,
work1 => work1.ID,
work2 => work2.ID,
(t1, t2) => new AllSheets
{
ID = t1.ID,
Floor = t1.Floor,
OverallDescription = t1.OverallDescription,
Permit = t1.Permit,
TabOne = t2.Select
(b => new SheetChildOne
{
Color = b.Color,
Status = b.Status,
}
)
}
);
Подробнее здесь: [url]https://stackoverflow.com/questions/77197258/chain-multiple-join-or-groupjoin-on-different-datasets-in-linq[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия