1

TABLE在 SQL 数据库中有一个列, TABLE ID,Subject,Body,Status,TimeDate在 400 行数据中有一个列,每个列都有一个 Id 作为 P_Key,并且标识规范是 Yes。

这是Id = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 etc..

我想根据保存的旧 ID 从表中选择更大的 ID,就像我在使用下面的 Linq Query 获得相同的 ID 时保存了 ID 12 一样:

      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;
      }

i 可以返回大于 12 的 id。还有一个问题。如果IDDB 示例中缺少更大的 Id 13,那么在这种情况下我将得到 Id 14。请让我知道如何使用 linq 查询从 db 获取我想要的 id。

4

3 回答 3

1

利用Min

return con.<TABLE>
       .Where(v=>v.ID > 12)
       .Select(v=>v.ID)
       .DefaultIfEmpty()
       .Min();
于 2013-10-17T10:50:49.753 回答
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();
于 2013-10-17T11:31:38.217 回答
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)。根据需要添加错误处理代码。

于 2013-10-17T11:56:23.237 回答