日期:2014-05-20  浏览次数:20744 次

Linq Max()问题
本帖最后由 q107770540 于 2013-08-12 14:38:47 编辑

 public int GetMaxID()
        {
             var id = Context.Sys_News.Max(s => s.ID);//第一种
             var id = (from s in Context.Sys_News orderby s.ID descending select s.ID).First();//第二种
             var id = Context.Sys_News.Select(s => s.ID).Max();//第三种
         
            return id;
        }

假设ID 为自增整型字段 上面方法为获取表中最大的ID,哪一种效率最高???? 
我觉得 第一种>第二种>第三种 你们觉得呢?
LINQ Max EF

------解决方案--------------------
  var id = (from s in Context.Sys_News orderby s.ID descending select s.ID).DefalutORFirst();//第二种
------解决方案--------------------
你的这个方法,使用的上下文是什么?
如果是在新增数据后,想得到刚新增的主键ID,完全没必要使用这个方法
直接这样即可:

Sys_News sn=new Sys_News();
sn.Name="test";
Context.Sys_News.InsertOnSubmit(sn);
Context.Sys_News.SaveChanges();
int id=sn.ID; //这个即是刚新增的主键ID


BTW: 从你的代码来看,第一种和第三种是一样的,一般情况下比第二种要快些,因为第二种加了orderby