繁体   English   中英

如何使用Linq获取表的最大ID或1(如果为空)?

How can I get the Max id of a table or 1 if empty using Linq?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我通过从表中选择最大ID并将其递增1来手动插入表的ID,如果表为空并且max返回null,我如何使用c#和linq做到这一点,我正在使用以下代码,但是给出错误“不能将空值分配给类型为System.Int32的成员,这是非空值类型”

var t = (from tab1 in db.questions select tab1.QuestionId1).Max();
            if (t!=null)
            {
                 qui = t + 1;
            }

            else
            {
                 qui = 1;
            }
3 个回复

这样的事情行吗?

// Assume we want to start with id 1
var maxId = db.Questions
    .Max(q => q.QuestionId1)
    .DefaultIfEmpty(0)
    .Max();

return maxId + 1;

DefaultIfEmpty将处理空表的情况。

数据库通常具有自动递增的id功能。 如果使用的是实体框架,则默认情况下应启用它。

绝对不是获取“新id”的首选方法(最好由数据库生成),但是在这里:

var maxId = ((from tab1 in db.questions select (int?)tab1.QuestionId1).Max() ?? 0) + 1;

或等效形式,但IMO更易于阅读:

var maxId = (db.questions.Select(x => (int?)x.QuestionId1).Max() ?? 0) + 1

最初的问题是您正在使用IEnumerable<int>参数调用Max() ,并且由于返回值是intint不能为null ,因此不允许它返回空值(引发异常) 。

我正在将Select()返回的枚举类型转换为Nullable<int> (或简称int? )类型的枚举类型,因此Max()返回一个int? 如果可枚举为空,则它可以返回null (例如,没有选择任何行的情况),而不是引发异常。

您可能正在使用LINQ的Extension Method语法在寻找类似的内容:

var maxID = db.Questions.Any() 
            ? db.Questions.Max(q => QuestionId1) + 1
            : 1

如果数据库中有任何Questions ,请抓住最高的QuestionId1并加1。否则返回1。

1 如何使用linq从表中获取最大ID

我有一个表Estimation,其中有一个列EstimationNo,我试图像这样获得最大EstimationNo- 但是问题是,如果同一张表由不同的用户同时保存,则为两个用户保存相同的EstimationNo。 喜欢-10,10 现在,如何处理此问题。请提供一些解决方案。 ...

2 使用LINQ 2 SQL从2个表中获取最大ID

我有一个'var',其中包含使用LINQ to SQL的两个表的结果。 我需要获得MAX(table1.ID)。 但是我不能: 因为myVar对其持有的对象一无所知。 该语法应该是什么样的? 编辑: 完整查询为: 返回几个结果。 我想要最大的table1.ID ...

4 使用LINQ从表中获取最大价值

我的数据库中有一个表。 我想获取名为NumOfView的列的最大值。 我使用以下代码: 它可以工作,但是当有两个或多个相同的最大值时,它不起作用,并显示以下消息: 序列包含多个元素 我现在应该怎么办? 您的答案将非常有帮助。 谢谢 ...

5 LINQ连接两个表并获取具有最大ID的行

我需要连接两个表,以获取最新的行(一个表上具有最大ID)。 我有以下表格(和示例数据): tblParts tblPartsVersion 我已经构造了如下的SQL查询: 差不多,我正在得到所需的结果: 我需要一些帮助来尝试将此查询转换为LINQ,但我 ...

2015-09-16 17:34:42 3 1609   c#/ linq
6 LINQ; 如何使用连接获取最大ID的记录?

我想从列表中找到一条记录,该记录应该是列表的MAX(id)。 该记录用于在网格视图中显示。 在这里,我想将MasterRenewal的一列与cacheProducts的ID相匹配,所以我尝试了以下操作 如果MasterRenewal包含多个具有相同MstSeq的记录,那么我想获 ...

7 无法使用CDbCriteria获取表的最大ID

嗨,我正在尝试使用yii中的“ CDbCriteria”获取表的最大ID 这是我的代码 但是当我得到最大的“ package_image_id”时,我遇到了这个问题, ...

2016-01-12 04:18:29 1 66   yii
8 尝试使用Linq2Sql从表中获取最大日期

以下linq2sql代码使我非常头疼,我希望有人可以帮助您 该代码可在LinqPad中运行,并且可以正常编译,但是在项目运行时会出现“不支持指定方法”的信息。 如果我不使用Value或进行强制转换,则会出现以下错误: ** 无法隐式转换类型'System.DateT ...

10 使用LINQ获取连接表中的最大计数

我在Stackoverflow上遇到了很多问题,恐怕我仍然找不到答案。 我正在使用实体框架。 我正在使用LINQ寻找过去七天中最受欢迎的课程。 我在查询中涉及四个表,时间表,会话,位置和联结表ClientSesions 时间表的模型是 会话模型 Junction Cl ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM