У меня есть групповая модель, которая имеет отношения «многие ко многим» с двумя другими моделями. Вот упрощенный код первой, чтобы объяснить:EF6 Запрос через множественные отношения «многие ко многим»
public class Store
{
public int ID {get; set;}
public string Name {get; set;}
public virtual ICollection<StockGroup> StockGroups { get; set; }
}
public class StockItem
public int ID {get; set;}
public string Name {get; set;}
public virtual ICollection<StockGroup> StockGroups { get; set; }
}
public class StockGroup
public int ID {get; set;}
public string Name {get; set;}
public virtual ICollection<Store> Stores { get; set; }
public virtual ICollection<StockItem> StockItems { get; set; }
}
Использование Fluent API, который я создал многие-ко-многим между магазин и StockGroup, а также StockItem и StockGroup. Это, в свою очередь, создает две таблицы соединений.
Проблема, с которой я сталкиваюсь, я не могу создать запрос, который охватывает от Store to StockItem или наоборот, без использования циклов foreach.
Например: если у вас есть один элемент StockItem, я бы хотел знать все магазины, связанные с ним, через таблицу StockGroup. Я пробовал что-то вроде этого, но возвращаемое - это коллекция коллекции.
var stock = db.StockItems.Find(4);
var stores = stock.StockGroups.Select(g => g.Stores);
Как я могу переписать это, чтобы объединить StockGroups, чтобы предоставить мне коллекцию магазинов?
Спасибо!
SelectMany именно то, что я искал. Большое спасибо! Я действительно сделал то, что хотел: 'var stores = stock.StockGroups.SelectMany (g => g.Stores) .ToList();' – Karlman68