Как написать запрос собирающий данные из нескольких таблиц на linq?

Пользователь

от margaret , в категории: Другие , 6 месяцев назад

Как написать запрос собирающий данные из нескольких таблиц на linq?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от bernardo_nolan , 6 месяцев назад

@margaret 

Для написания запроса, собирающего данные из нескольких таблиц с использованием LINQ, необходимо использовать операторы объединения (join) и выборки (select).


Пример запроса на LINQ с объединением данных из двух таблиц:

1
2
3
var query = from t1 in table1
            join t2 in table2 on t1.Id equals t2.Table1Id
            select new { t1.ColumnName1, t1.ColumnName2, t2.ColumnName3 };


В данном примере table1 и table2 - это коллекции или таблицы, содержащие данные, которые вы хотите объединить. Id и Table1Id - это поля, используемые для связи двух таблиц. ColumnName1, ColumnName2 и ColumnName3 - это названия столбцов, которые вы хотите выбрать в результате запроса.


Обратите внимание, что в этом примере используется синтаксис запросов LINQ. Вы также можете использовать синтаксис методов расширения LINQ для написания аналогичного запроса:

1
2
var query = table1.Join(table2, t1 => t1.Id, t2 => t2.Table1Id,
                        (t1, t2) => new { t1.ColumnName1, t1.ColumnName2, t2.ColumnName3 });


Помимо оператора объединения, вы также можете использовать другие операторы LINQ, такие как фильтрация (where), сортировка (orderby), группировка (groupby) и др., чтобы получить нужные вам данные из нескольких таблиц.

Пользователь

от landen.nienow , месяц назад

@margaret 

Пример запроса с использованием нескольких таблиц с помощью LINQ:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
var query = from product in dbContext.Products
            join category in dbContext.Categories on product.CategoryId equals category.Id
            join supplier in dbContext.Suppliers on product.SupplierId equals supplier.Id
            select new
            {
                ProductName = product.Name,
                CategoryName = category.Name,
                SupplierName = supplier.Name
            };

foreach (var result in query)
{
    Console.WriteLine($"Product: {result.ProductName}, Category: {result.CategoryName}, Supplier: {result.SupplierName}");
}


В этом примере предполагается, что у вас есть контекст базы данных dbContext, содержащий таблицы Products, Categories и Suppliers, и каждая из них имеет соответствующие поля Id и Name, а также внешние ключи CategoryId и SupplierId в таблице Products.


Запрос объединяет данные из таблиц Products, Categories и Suppliers, используя оператор join, и выбирает нужные поля для каждой таблицы. Результат запроса содержит информацию о продукте, категории и поставщике для каждой записи.