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-恢复到您所说的工作状态:-p
var measid=dataContext.MeasResults.Select(a=>a.measid)。其中(p=>p!=null)。Max()+1这是一个有效的,并且有一个警告
表达式的结果总是'true',因为'int'类型的值永远不等于'int'类型的'null'
该警告基本上是告诉您不需要
。其中(p=>p!=null)
。。。如果您使用的是这种语句风格,那么当表为空时,它可能不起作用。