我在sql中有两个表,我想使用第一个表中的4列和第二个表中的1列来检索和填充datagridview。我的问题是,我正在对第一个表中的数据进行一些排序,但我不知道如何联接第二个表的列数据。 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;
}
我知道我的问题出在查询的 select 部分,但我找不到如何添加 y.HeatCnt 来选择查询的方法。
我该怎么做?
注意
我已经研究了以下有关联接两个表的线程,但是它与我的代码的排列方式并不完全相同。
Retrieving data from multiple tables using linq-to-sql
编辑
答案 0 :(得分:0)
我对想要的数据有些困惑。但是您可以使用以下解决方案进行尝试,并获得预期的结果。
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
};