[英]LINQ get Highest value and + 1
我是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 ???
感謝您的指導。
您可以使用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;
你不需要GorupBy方法,這應該足夠了:
var maxId =
db.SURV_Question_Model
.Where(r => r.Question_Survey_ID == viewModel.Survey_ID)
.OrderByDescending(x => x.Position)
.FirstOrDefault());
我實際上不知道where條件的用法,無論如何我都離開了那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.