Я использую EFF с базой данных MySql, где у меня есть 3 разных таблицы (например, пользователи, продукты, пользователи). и естьОптимизация выражений LINQ
- ПользователиИнтерес имеет список пользователей, участвующих в покупке бакалеи.
СтолбецUserInvolved
является внешним ключом кusers.UserID
и
СтолбецGroceryID
является внешним ключомgroceries.ItemID
. - бакалея имеет список продуктов, которые были приобретены.
- пользователи имеют список сведений о пользователе. (Только Имя обеспокоен таблицы)
То, что я хочу добиться того, что
Перечень продовольственных товаров выбран FRM стол groceries
, Основываясь на этом списке, я должен получить список пользователей, участвующих в покупке этого списка, из таблицы usersItems
. Наконец, я должен получить имена этих пользователей из таблицы users
и показать эти имена как разделенные точкой с запятой .
Вот связь между tables-
и вот что я пытался добиться этого Linq
var gList = entities.groceries.Select(item => item.ItemID);
var uInvolved = entities.usersitems.Where(item => gList.Contains(item.GroceryId)).Select(u => u.userInvolved);
var usrs = string.Join(";", entities.users.Where(us => uInvolved.Contains(us.UserID)).Select(name => name.FullName));
Используя эту LINQ, я получаю результат, что я хочу, но как вы видите, это мало оптимизировано. В целом, я хочу сократить/оптимизировать эти запросы, и я очень смущен, когда я ошибаюсь. Кроме того, я пытался достичь этого результата как View
непосредственно из базы данных, но все же я не мог.