LINQ获得最高值和+ 1

时间:2015-05-17 06:41:44

标签: c# linq entity-framework linq-to-sql

我是LINQ的新手。 我想知道'问题位置'的最高价值是什么?我希望将新问题增加1,并将其从MVC 4视图保存到数据库中。

我的数据库数据:(最高位置值为2)

====================
Question  | Position
====================
Q1        |     1
Q2        |     2

添加新问题后:(增加最高位置(2)+ 1)

====================
Question  | Position
====================
Q1        |     1
Q2        |     2
Q3        |     3

我的代码:

var query =
                db.SURV_Question_Model
                .Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
                .GroupBy(r => new { r.Question_Position })
                .Select(grp => grp.OrderByDescending(i => i.Question_Position).FirstOrDefault());

从查询中获得最高值后,我可以执行下面的操作吗?

* int i = query.Question_Position + 1 ??? 

感谢您的指导。

2 个答案:

答案 0 :(得分:4)

您可以使用Max

var maxId = db.SURV_Question_Model
              .Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
              .Max(x => x.Position);

但是,如果没有任何记录,它将抛出异常。因此,最好将代码更改为:

var maxId = ...Max(x => (int?)x.Position) ?? 0;

答案 1 :(得分:1)

你不需要GorupBy方法,这应该足够了:

var maxId =
    db.SURV_Question_Model
    .Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
    .OrderByDescending(x => x.Position)
    .FirstOrDefault());

我实际上并不知道where where条件的用法,无论如何我都离开了那里。