Извлечение данных из двух разных таблиц SQL в таблицу данных с использованием Linq to Sql - PullRequest
0 голосов
/ 20 июня 2019

У меня есть две таблицы в sql, и я хочу получить и заполнить таблицу данных, используя 4 столбца из первой таблицы и 1 столбец из второй таблицы.Моя проблема в том, что я делаю некоторый порядок для данных из первой таблицы, и я не мог понять, как объединить данные столбцов второй таблицы.Таблица MeasResults - это первая таблица, а Molds - вторая таблица.
Вот как я получаю данные таблицы MeasResults;

using (LinqDataClassesDataContext dataContext = new 
LinqDataClassesDataContext())
{
   var query = from x in dataContext.MeasResults
               where x.MoldID == cBMeasDBMID.SelectedValue.ToString()
               group x by x.MeasId into grp                           
               select grp.OrderByDescending(x => x.MeasId).First();

   var result = query.OrderByDescending(x => x.MeasId).Take(5);

   daGridLastMeas.AutoGenerateColumns = false;
   daGridLastMeas.Columns["MeasId"].DataPropertyName = "MeasId";
   daGridLastMeas.Columns["Date"].DataPropertyName = "Date";       
   daGridLastMeas.Columns["Plane"].DataPropertyName = "Plane";
   daGridLastMeas.Columns["Position"].DataPropertyName = "Postn";

   daGridLastMeas.DataSource = result;
}

И я попытался реализовать функцию join , чтобы получить HeatCnt значение из второй таблицы (пресс-формы).

using (LinqDataClassesDataContext dataContext = new 
LinqDataClassesDataContext())
{
   var query = from x in dataContext.MeasResults
               where x.MoldID == cBMeasDBMID.SelectedValue.ToString()
               join y in dataContext.Moulds on x.MoldID equals y.MID
               group x by x.MeasId into grp                           
               select grp.OrderByDescending(x => x.MeasId).First();

   var result = query.OrderByDescending(x => x.MeasId).Take(5);

   daGridLastMeas.AutoGenerateColumns = false;
   daGridLastMeas.Columns["MeasId"].DataPropertyName = "MeasId";
   daGridLastMeas.Columns["Date"].DataPropertyName = "Date";
   daGridLastMeas.Columns["Heat"].DataPropertyName = "HeatCnt";       
   daGridLastMeas.Columns["Plane"].DataPropertyName = "Plane";
   daGridLastMeas.Columns["Position"].DataPropertyName = "Postn";

   daGridLastMeas.DataSource = result;
}

Я знаю, что моя проблема в выделении части запроса, но я не смог выяснить, как добавить y.HeatCnt для выбора запроса.

Как я могу это сделать?

NOTE

Я уже изучилследующий поток о соединении двух таблиц, но он не совсем совпадает со способом моего кода.

Извлечение данных из нескольких таблиц с использованием linq-to-sql

РЕДАКТИРОВАТЬ

Moulds_Table_SS

MeasResults_Table

Expected_Results (Колонка нагрева должна отображать 0 )

1 Ответ

0 голосов
/ 20 июня 2019

Я немного запутался в данных, которые вы хотите. Но вы можете поиграть с нижеприведенным решением и получить ожидаемые результаты.

var query = 
from i in dataContext.Moulds
    let p = dataContext.MeasResults.Where(p2 => i.MID == p2.MoldID).FirstOrDefault() 
    where i.MID == cBMeasDBMID.SelectedValue.ToString()
    orderby i.MeasId descending
    select new
    {
        MeasId = i.MID,
        Date = p.Date,
        Heat = i.Heat,
        Plane = p.Plane,
        Position = p.Position
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...