У меня есть 3 объекта: Surveys
, Batch
и Removed
, где Surveys является родительской таблицей, а два других связаны с Surveys с внешними ключами.
public class Surveys
{
public int TireID { get; set; }
public dateTime DateCreated{ get; set; }
}
public class Batch
{
public int TireID { get; set; }
public int TirePosition{ get; set; }
public ICollection<Surveys> Survey{ get; set; }
}
public class Removed
{
public int TireID { get; set; }
public int TirePosition{ get; set; }
public dateTime DateRemoved{ get; set; }
public ICollection<Surveys> Survey{ get; set; }
}
У меня есть запрос, чтобы получить Пакет шин, которые были частью Обзора, и удаленные из Удаленного:
var surveys = ctx.Surveys.Where(a => a.DateSubmitted >= startDate && a.DateSubmitted < endDate).Select(a => new T_Batch
{
//don't know how to get desired result
}).ToList();
У меня есть пользовательский тип, который должен иметь результат запроса (T_Batch):
public class T_Batch
{
public int TireID { get; set; }
public int TirePosition { get;
public T_Removed Removed{ get; set; }
}
public class T_Removed
{
public int TireID { get; set; }
public int TirePosition { get; set; }
}
Результат запроса возвращает список Surveys, что нормально, но я хотел бы получить список шин для каждого элемента списка Survey и удаленную шину (если она была удалена) для каждой позиции шины. Я не знаю, как этого добиться.
Пример желаемого результата:
0 Batch_Tire1
1 Batch_Tire2
0 Removed_Tire
2 Batch_Tire3
3 Batch_Tire4
0 Removed_Tire
etc...
UPDATE
Я мог бы сделать что-то подобное, но мне нужно получить набор результатов в качестве моего пользовательского типа.
var surveys = ctx.TM_Survey.Where(a => a.DateSubmitted >= startDate && a.DateSubmitted < endDate).Select(a => new
{
BatchItem = a.Batch,
RemovedItem = a.Removed
}).ToList();
ОБНОВЛЕНИЕ 2
Или я мог бы сделать это, но результат возвращает только ограниченное количество строк, равное количеству ключей в TM_Survey
var surveys = ctx.TM_Survey.Where(a => a.DateSubmitted >= startDate && a.DateSubmitted < endDate).Select(a => new T_Batch
{
TireID = a.T_Batch.Select(b => b.ID).First(),
TirePosition = a.T_Batch.Select(b => b.TirePosition).First()
Removed = new T_Removed
{
//...etc
}
}).ToList();