【问题标题】:How to select greater number and lower number using LINQ To SQL in C#如何在 C# 中使用 LINQ To SQL 选择更大的数字和更低的数字
【发布时间】:2013-10-17 10:48:21
【问题描述】:

我有一个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,就像我已经保存 ID 12 一样,我使用下面的 Linq Query 获得相同的 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;
      }

i 可以返回大于 12 的 id。还有一个问题。如果有更大的ID is Missing from DB example Id 13 is missing 那么在这种情况下我将得到Id 14。请让我知道如何使用 linq 查询从 db 获取我想要的 id。

【问题讨论】:

  • 仅供参考,您不能在帖子中使用 <>,除非它们被引用。
  • @DeveloperKinks 你能澄清一下 - 你想要给定 ID 之后的下一个 ID 值吗?如果您提供 12,它应该返回 13。但是,如果缺少 13,它应该返回 null 还是应该返回 14?
  • 是的,如果缺少 13 应该返回 14。然后
  • 是的,只是在您编辑之前没问题,因为我添加了引号!
  • 我尝试下面的例子不工作给出一些问题

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


【解决方案1】:

使用Min

return con.<TABLE>
       .Where(v=>v.ID > 12)
       .Select(v=>v.ID)
       .DefaultIfEmpty()
       .Min();

【讨论】:

  • 我没有得到我必须在查询中使用 Min 的确切位置,您能否通过添加您的建议来完成我的查询。这样就很容易理解 Min 的使用
  • 有一个错误无法格式化节点“OptionalValue”以作为 SQL 执行。
【解决方案2】:

我为你做了一个样品

    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();

【讨论】:

  • 是的,它正在工作,但我应该如何根据 ID 和状态从数据库中获取这样的 ID。如果你有一些薄荷糖可以帮助我,请告诉我如何在 LIQ Query 中使用它,我不是这方面的专家。
  • 喜欢这个 DataContext con = new DataContext(Global.con);表表 = 新表(); Table = con.Emails.Where(x => x.Id > 1).Min();返回表;
  • 雷克斯你能解释一下吗。使用 linq 的 Table 或使用 System.Web.UI.WebControls 的 Table;我们服务器是作为桌面应用程序开发的,请告诉我我是如何做到的。
【解决方案3】:

根据您已有的代码:

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,状态 = 活动)。根据需要添加错误处理代码。

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多