Linq To SQlСводка

искусственный интеллект

1. Как создать новый проект LINQ to SQL.


    1. После создания нового проекта выберите «Новый элемент», найдите класс LINQ toSQL, назовите его и добавьте.
    2. Найдите соответствующую базу данных, выберите соответствующую таблицу и поместите ее в пустое место.

 

Например: запросите данные таблицы WarehouseInfo.

 

код показывает, как показано ниже:

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext DC = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

            var query = from item in DC.WarehouseInfo

Где item.Area >= 100//Используйте LINQ для запроса складов площадью более 100 квадратных метров.

orderby item.ShortName//сортировать по названию склада

                        select item;

DataGridView1.DataSource = query.ToList();//Привязываем набор результатов запроса к dataGridView1

        }

2. Используйте «Содержит», чтобы получить оператор, эквивалентный «Не существует» (НЕ ВНУТРИ).

**** private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

// Список предметов в инвентаре, которые никогда не продавались

            var query = from sto in dc.V_StoreInfo

//Подзапрос применяется в предложении where

                        where !(from sal in dc.V_SaleInfo

                                select sal.ProductCode).Contains(sto.ProductCode)

                        select new

                        {

Склад = sto.WareHouseName,

ProductName = sto.ProductName,

Количество = сто.Количество,

Цена за единицу = сто.Цена,

Сумма = Сто.Сумма

                        };

dataGridView1.DataSource = query;//Привязываем результат запроса к dataGridView1

        }

3. Сортировать по нескольким полям в порядке убывания

**** private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc =new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//сортируем по убыванию по товарной номенклатуре и единице измерения

            var query = from item in dc.ProductInfo

                        orderby item.ProductType descending, item.Unit descending

                        select item;

DataGridView1.DataSource = query;//Привязываем набор результатов запроса к dataGridView1

        }

Четыре связанных запроса к нескольким таблицам

   private void Frm_Main_Load(object sender, EventArgs e)

{

****DataClassesDataContext dc = new DataClassesDataContext();//Создать объект LINQ

var query = from sc в dc.SaleContent//Основная таблица Sales

         

Присоединить pi в dc.ProductInfo к sd.ProductCode равно pi.ProductCode//Связать таблицу информации о продукте по коду продукта

Присоединиться к ei в dc.EmployeeInfo на sc.SaleMan равно ei.EmployeeCode//Связать таблицу сотрудников по коду сотрудника

Присоединиться к wi в dc.WarehouseInfo на sc.WareHouse равно wi.WareHouseCode//Связать таблицу информации о складе по коду склада

присоединиться к ci в dc.ClientInfo на sc.ClientCode равно ci.ClientCode // Ассоциировать таблицу информации о клиенте по коду клиента

                        select new

                        {

                            ID = sc.ID,

SaleBillCode = sc.SaleBillCode,//Номер торгового документа

SaleMan = ei.Name,//Получить имя продавца из таблицы сотрудников

SaleDate = sc.SaleDate, // Дата продажи

Provider = ci.ShortName,//Получить название закупочной единицы из таблицы клиентов

WareHouse = wi.ShortName,//Получить имя склада из таблицы склада

ProductCode = pi.ProductCode,//Получить код продукта из таблицы информации о продукте

ProductName = pi.ShortName, // название продукта

Количество = sd.Количество,//Количество

Цена = sd.Price,//цена за единицу

Сумма = sd.Quantity * sd.Price,//сумма

Валовая прибыль = sd.Quantity * (sd.Price - sd.Cost)//валовая прибыль = объем продаж - себестоимость товара

                        };

dataGridView1.DataSource = query;//Привязываем результирующий набор запроса к dataGridView1

        }

5. Группировка по нескольким условиям

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

var query = from sto in dc.V_StoreInfo//Таблица инвентаризации запроса

сгруппировать sto по new { sto.WarehouseCode, sto.ProductCode } в g//Группировать по коду склада и коду товара

                        select new

                        {

Код склада = g.Key.WarehouseCode,

ИмяСклада = g.Max(itm => itm.ИмяСклада),

Код товара = g.Key.ProductCode,

Название продукта = g.Max(itm => itm.ProductName),

Количество на складе = g.Sum(itm => itm.Quantity)

                        };

dataGridView1.DataSource = query;//Привязать сгруппированный набор результатов к dataGridView1

        }

6. Операция подсчета - подсчет количества продаж каждого товара

  private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//Подсчитываем количество продаж каждого товара

            var query = from det in dc.V_SaleDetail

сгруппировать det по det.ProductCode в g//сгруппировать по коду продукта

                        select new

                        {

Код товара = g.Key,

Название продукта = g.Max(itm => itm.ProductName),

Количество продаж = g.Count()//Используем метод Count для подсчета количества продаж

                        };

DataGridView1.DataSource = query;//Привязываем набор результатов запроса к dataGridView1

        }

Семь, операция СУММ - статистика общих продаж каждого товара

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//Статистика общих продаж каждого товара

            var query = from det in dc.V_SaleDetail

сгруппировать det по det.ProductCode в g//сгруппировать по коду продукта

                        select new

                        {

Код товара = g.Key,

Название продукта = g.Max(itm => itm.ProductName),

Общий объем продаж = g.Sum(itm => itm.amount)//Общий объем продаж каждого товара

                        };

dataGridView1.DataSource = query;//Привязываем результат запроса к dataGridView1

        }

Восемь, операция MAX - статистика максимальной цены продажи каждого товара.

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//Статистика самой высокой цены продажи каждого продукта

            var query = from det in dc.V_SaleDetail

сгруппировать det по det.ProductCode в g//сгруппировать по коду продукта

                        select new

                        {

Код товара = g.Key,

Название продукта = g.Max(itm => itm.ProductName),

Самая высокая цена продажи = g.Max(itm => itm.Price)//Самая высокая цена продажи каждого товара

                        };

dataGridView1.DataSource = запрос;//DataBind dataGridView1

        }

9. Мин. операция - статистика минимальной цены каждого товара

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//Статистика минимальной продажной цены за единицу каждого товара

            var query = from det in dc.V_SaleDetail

сгруппировать det по det.ProductCode в g//сгруппировать по коду продукта

                        select new

                        {

Код товара = g.Key,

Название продукта = g.Max(itm => itm.ProductName),

Самая низкая цена продажи = g.Min(itm => itm.Price)//Статистика самой низкой цены продажи каждого продукта

                        };

dataGridView1.DataSource = запрос;//DataBind dataGridView1

        }

10. Средняя операция — среднестатистическая цена продажи каждого продукта.

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

//Статистика средней цены продажи каждого товара

            var query = from det in dc.V_SaleDetail

сгруппировать det по det.ProductCode в g//сгруппировать по коду продукта

                        select new

                        {

Код товара = g.Key,

Название продукта = g.Max(itm => itm.ProductName),

Средняя цена продажи = g.Average(itm => itm.Price)//Используйте Average для подсчета средней цены продажи каждого продукта

                        };

dataGridView1.DataSource = query;//Привязываем результирующий набор запроса к dataGridView1

        }

11. Разностная операция - получить список товаров, которые никогда не возвращались

   private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

var saleInfo = dc.V_SaleInfo.Select(itm => new { itm.ProductCode, itm.ProductName });//Информация о продажах

var saleRetu = dc.V_SaleReturnInfo.Select(itm => new { itm.ProductCode, itm.ProductName });//Возврат продажи

var query = saleInfo.Except(saleRetu);//Возьмем набор разностей

dataGridView1.DataSource = query;//Привязываем результирующий набор запроса к dataGridView1

        }

12. Непосредственно выполнять операторы SQL

  private void button1_Click(object sender, EventArgs e)

        {

            string sql = "select * from V_StoreInfo where 1=1";

If (comboBox1.SelectedIndex > -1)//Выпадающий список склада не пуст

            {

                sql += " and WareHouseName = '" + comboBox1.Text + "'";

            }

If (textBox1.Text.Trim()!= "")//Текстовое поле мнемонического кода продукта не пусто

            {

                sql += " and HelpCode like '" + textBox1.Text + "%'";

            }

var query = dc.ExecuteQuery(sql);//Выполнение SQL-запроса

DataGridView1.DataSource = query.ToList();//DataBind dataGridView1

        }

Тринадцать, используйте технологию LINQ для добавления данных в базу данных SQL.

      private void button1_Click(object sender, EventArgs e)

        {

//Определяем, нужно ли вводить имя, возраст, номер телефона и домашний адрес

            if (txtaddress.Text != "" && txtage.Text != "" && txtName.Text != "" && txtphone.Text != "")

            {

If (txtphone.Text.Length != 11)//Определяем, является ли введенный номер телефона законным

                {

MessageBox.Show("Количество цифр в телефонном номере неверное");//Если это неправильно, появится подсказка

                }

Else//Если введенный номер телефона действителен

                {

linq = new linqtosqlDataContext();//Создаем объект подключения linq

tb_User users = new tb_User();//Создать объект tb_User

Users.User_Name = txtName.Text.Trim();//Задаем имя

users.User_Sex = cbbSex.Text;//Пол

Users.User_Age = txtage.Text;//Возраст

users.User_Marriage = cbbmary.Text;//семейное положение

Users.User_Duty = cbbduty.Text;//Позиция

Users.User_Phone = txtphone.Text;//Телефон

Users.User_Address = txtaddress.Text;//Домашний адрес

linq.tb_User.InsertOnSubmit(users);//Отправить данные

linq.SubmitChanges();//Выполнить изменения в базе данных

binginfo();//Перепривязываем данные

MessageBox.Show("Добавлено успешно");//Всплывающее окно

                }

            }

        }

Четырнадцать, используйте технологию LINQ для изменения данных в базе данных SQL.

int Pid;//Определяем переменную для записи выбранного числа

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

        {

If (dataGridView1.SelectedRows.Count != 0)//Определяем, выбрана ли строка

            {

linq = new linqtosqlDataContext(strCon);//Инициализировать объект подключения LINQ

Pid = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);//Запишите выбранное число

//Запросить информацию, соответствующую заданным условиям

                var result = from info in linq.tb_User

                             where info.ID == Pid

                             select new

                             {

Имя = info.User_Name,//Получить имя

Пол = info.User_Sex,//Получить пол

Возраст = info.User_Age,//Получить возраст

Mary = info.User_Marriage,//Получить семейное положение

Duty = info.User_Duty,//Получить позицию

Phone = info.User_Phone,//Получить номер телефона

Address = info.User_Address//Получить контактный адрес

                             };

                foreach (var item in result)

                {

txtName.Text = item.Name.Trim();//Отображаемое имя

cbbSex.Text = item.Sex.Trim();//Показать пол

txtage.Text = item.Age.Trim();//Показать возраст

cbbmary.Text = item.Mary.Trim();//Показать семейное положение

cbbduty.Text = item.Duty.Trim();//Показать позицию

txtphone.Text = item.Phone.Trim();//Показать номер контакта

txtaddress.Text = item.Address.Trim();//Показать контактный адрес

                }

            }

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

//Определяем, нужно ли вводить имя, возраст, номер телефона и домашний адрес

            if (txtaddress.Text != "" && txtage.Text != "" && txtName.Text != "" && txtphone.Text != "")

            {

If (txtphone.Text.Length != 11)//Если номер телефона неверный

                {

MessageBox.Show("Неверное количество цифр в номере телефона");//Всплывает подсказка

                }

                else

                {

                    linq = new linqtosqlDataContext(strCon);

                    var resultChange = from info in linq.tb_User

Где info.ID == Pid//Создать linq и настроить его на изменение в соответствии со значением ID

                                       select info;

                    foreach (tb_User users in resultChange)

                    {

Users.User_Name = txtName.Text;//Имя

Users.User_Sex = cbbSex.Text;//Пол

Users.User_Age = txtage.Text;//Возраст

Users.User_Marriage = cbbmary.Text;//Семейное положение

Users.User_Duty = cbbduty.Text;//Позиция

Users.User_Phone = txtphone.Text;//Телефон

Users.User_Address = txtaddress.Text;//Домашний адрес

linq.SubmitChanges();//Метод SubmitChanges отправляет изменения

                    }

MessageBox.Show("Изменено успешно");//Всплывает сообщение об успешном завершении

binginfo();//Перепривязываем данные

                }

            }

        }

15. Удалить данные в базе данных SQL с помощью технологии LINQ

int id;//Определяем переменную для записи выбранного числа

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

        {

If (dataGridView1.SelectedRows.Count != 0)//Определяем, выбрана ли строка

            {

id =Convert.ToInt32( dataGridView1.SelectedRows[0].Cells[0].Value);//Записываем число, выбранное пользователем

            }

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

If (dataGridView1.SelectedRows.Count != 0)//Определяем, выбран ли элемент

            {

                linq = new linqtosqlDataContext(strCon);

                var result = from info in linq.tb_User

                             where info.ID == id

Выбрать информацию;//Создать linq и задать условия для удаления

linq.tb_User.DeleteAllOnSubmit(result);//Удаляем указанные данные через метод DeleteAllOnSubmit

linq.SubmitChanges();//Отправляем изменения в таблицу данных

MessageBox.Show("Успешное удаление");//Всплывающее сообщение

bindinfo();//Перепривязываем данные

            }

else//если нет вариантов

            {

MessageBox.Show("Пожалуйста, выберите элемент для удаления");//Отображение подсказки

            }

        }

16. Запрос данных формы с помощью хранимых процедур

Перетащите хранимую процедуру в файл .dbml и вызовите следующий код:

      private void button1_Click(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

var query = dc.P_queryWarehouseInfo(textBox1.Text);//Вызов хранимой процедуры для возврата информации о складе

dataGridView1.DataSource = query;//Привязываем результат запроса к dataGridView1

        }

Семнадцать, используйте технологию LINQ для вызова методов в SQL.

 

ALTER FUNCTION [dbo].[F_GetSex]

(

         @SexFlag Varchar(10)

)

RETURNS Varchar(2)

AS

begin

         declare @sex varchar(2)

         IF (@SexFlag = 1)

установить @sex = 'женский'

         ELSE

установить @sex = 'мужской'

         RETURN @sex

end

private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

            var query = from emp in dc.EmployeeInfo

                        select new

                        {

                            emp.Addr,

                            emp.Birthday,

                            emp.EMail,

                            emp.EmployeeCode,

                            emp.Handset,

                            emp.HelpCode,

                            emp.ID,

                            emp.IDCard,

                            emp.Name,

                            emp.OperateDate,

                            emp.Operator,

                            emp.Tel,

Sex = dc.F_GetSex(emp.Sex)//Вызов функции в SQL Server для отображения информации о поле китайского языка

                        };

DataGridView1.DataSource = query.Take(5);//Привязываем набор результатов запроса к dataGridView1

        }

18. Получить информацию о первичном ключе на основе внешних ключей

 

    private void Frm_Main_Load(object sender, EventArgs e)

        {

DataClassesDataContext dc = new DataClassesDataContext();//Создаем экземпляр класса контекста данных

            var query = from it in dc.DictionaryItem

                        select new

                        {

                            it.DictItemID,

It.DictionaryType.DictTypeCode,//Получить информацию об основной таблице через тип EntityRef

                            it.DictionaryType.DictTypeName,

                            it.DictItemCode,

                            it.DictItemName

                        };

dataGridView1.DataSource = query;//Привязываем результирующий набор запроса к dataGridView1

        }