如何在C#中使用LINQ To SQL选择更大数字和更小数字

时间:2013-10-17 10:48:21

标签: asp.net sql-server linq c#-4.0

我在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。

3 个答案:

答案 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)。根据需要添加错误处理代码。