LINQ 获得最高值并 + 1
LINQ get Highest value and + 1
我是 LINQ 的新手。
我想知道 'Question Position' 的最高值是多少,我想为新问题将其增加 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 ???
感谢您的指导。
您不需要 GorupBy 方法,这应该足够了:
var maxId =
db.SURV_Question_Model
.Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
.OrderByDescending(x => x.Position)
.FirstOrDefault());
其实我也不知道where条件的用法,反正我就留在那里了。
您可以使用 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;
我是 LINQ 的新手。 我想知道 'Question Position' 的最高值是多少,我想为新问题将其增加 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 ???
感谢您的指导。
您不需要 GorupBy 方法,这应该足够了:
var maxId =
db.SURV_Question_Model
.Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
.OrderByDescending(x => x.Position)
.FirstOrDefault());
其实我也不知道where条件的用法,反正我就留在那里了。
您可以使用 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;