簡體   English   中英

LINQ獲得最高值和+ 1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM