C# 如何使用linq增加辅助ID(而不是主键)?
我正在尝试将测量从传感器记录到名为C# 如何使用linq增加辅助ID(而不是主键)?,c#,sql,linq,C#,Sql,Linq,我正在尝试将测量从传感器记录到名为MeasResult的sql表 此表的ID为主键,另一个ID名为MeasID。每次测量日志记录时,我需要将此MeasID增加1。每次测量日志记录都会向数据库中添加50行,最后添加的这些行应该具有相同的MeasID 我尝试了以下几点: private void BtnSaveMeas_Click(object sender, EventArgs e) { using (LinqDataClassesDataContext dataContext = new
MeasResult
的sql表
此表的ID为主键,另一个ID名为MeasID
。每次测量日志记录时,我需要将此MeasID增加1。每次测量日志记录都会向数据库中添加50行,最后添加的这些行应该具有相同的MeasID
我尝试了以下几点:
private void BtnSaveMeas_Click(object sender, EventArgs e)
{
using (LinqDataClassesDataContext dataContext = new LinqDataClassesDataContext())
{
var measid = dataContext.MeasResults.Max(x => x.MeasId) + 1;
string id = ""; string plane = ""; int pos = 0; int dist = 0; double apert = 0;
id = comboBMouldID.SelectedText;
plane = comboBSurface.SelectedText;
pos = Convert.ToInt32(txtTravelPos.Text);
for (int i = 0; i < daGridMeas.Rows.Count - 1; i++)
{
dist = Convert.ToInt32(daGridMeas.Rows[i].Cells[0].Value.ToString());
apert = Convert.ToDouble(daGridMeas.Rows[i].Cells[1].Value.ToString());
var st = new MeasResult()
{
st.MID = id,
st.Plane = plane,
st.Postn = pos,
st.Distnc = dist,
st.Apert = apert,
st.MeasId = measid
};
dataContext.MeasResults.InsertOnSubmit(st);
dataContext.SubmitChanges();
}
}
}
private void BtnSaveMeas\u单击(对象发送者,事件参数e)
{
使用(LinqDataClassesDataContext=new LinqDataClassesDataContext())
{
var measid=dataContext.MeasResults.Max(x=>x.measid)+1;
字符串id=“”;字符串平面=“”;int pos=0;int dist=0;双孔径=0;
id=comboBMouldID.SelectedText;
plane=comboBSurface.SelectedText;
pos=转换为32(txtTravelPos.Text);
对于(int i=0;i
我进行了三次测量并记录了它们,但在数据库MeasID
列中,所有测量值都为空。MeasID
列的默认值为1
我做错了什么?试着这样做:
var measid=dataContext.MeasResults.Select(a=>a.measid.DefaultIfEmpty().Max(p=>p??0)+1
可能重复的@TeoLaferla-恢复到您所说的工作状态:-pvar measid=dataContext.MeasResults.Select(a=>a.measid)。其中(p=>p!=null)。Max()+1代码>这是一个有效的,并且有一个警告表达式的结果总是'true',因为'int'类型的值永远不等于'int'类型的'null'
该警告基本上是告诉您不需要。其中(p=>p!=null)
。。。如果您使用的是这种语句风格,那么当表为空时,它可能不起作用。