Единственный способ сделать это - сделать inner join
для таблицы и выбрать поля в запросе ADO или хранимой процедуре.Затем вам придется вручную заполнять свои модели в коде, создавая группу на основе идентификатора NewForm и / или других полей.Для этого вы также можете использовать LINQ GroupBy
.
ОБНОВЛЕНИЕ Пример:
SQL будет записан как
SELECT * FROM NewForms nf
JOIN Field f on nf.Id = f.NewFormId
И затемв коде, выполняя DataReader для этого запроса
var dict = new Dictionary<int, NewForms>();
while(reader.HasRows)
{
var id = int.Parse(reader["Id"].ToString())
if(!dict.ContainsKey(id))
{
var newForm = new NewForms()
{
// Map properties from reader
}
dict[newForm.Id] = newForm;
}
// Create Field from the reader's columns
var field = new Field()
{
// Map properties from reader
};
dict[id].Field.Add(field);
}
var newForms = dict.Values.ToList();
Использование словаря здесь для эффективного сопоставления полей без вложенного цикла.
PS: В коде могут быть ошибки компиляции, так как я набрал его из головы.