我在SQL数据库中有一个TABLE
,其中有一列
400行数据中TABLE ID,Subject,Body,Status,TimeDate
,每个我都将Id作为P_Key,身份规范是。
以下是Id = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 etc..
我想根据已保存的旧ID从表格中选择更大的ID,就像我已经保存ID 12一样,使用下面的Linq查询得到相同的ID:
public static int CheckId()
{
DataClassesDataContext con = new DataClassesDataContext(Globals.con);
var q = from v in con.TABLE
where v.Id== 12 & v.Status == Active
select v.Id;
foreach (var val in q)
{
return Convert.ToInt32(val);
}
return 0;
}
我可以返回更大的id然后12.还有一个问题。如果有更多ID
缺少数据库示例,则缺少ID 13,那么在这种情况下我将获得Id 14。请让我知道如何使用linq查询从db中获取这样的id。
答案 0 :(得分:1)
使用Min
return con.<TABLE>
.Where(v=>v.ID > 12)
.Select(v=>v.ID)
.DefaultIfEmpty()
.Min();
答案 1 :(得分:1)
我为你做了一个样品
List<Int32> test = new List<Int32>{1,2,3,4,5,6,7,8,9,10,11,12,14,13,15,16};
var min = test.Where(x=>x>12).Min();
仅给出结果13,即使14是第一个更大的
在你的情况下
//get a table object
Table table = new Table() //if you want whole row.
table = con.Table.Where(x=>x.id>12).MIN();
答案 2 :(得分:0)
根据您已有的代码:
DataClassesDataContext con = new DataClassesDataContext(Globals.con);
var q = from v in con.TABLE
where v.Id > 12 & v.Status == Active
orderby v.Id
select v.Id;
return q.Take(1); // to return the whole row
// or
return q.Take(1).Id; // to return only the Id
这将返回符合标准的第一行(id> 12,status = active)。根据需要添加错误处理代码。