【问题标题】:How to get Single Row From Query without a foreach Loop?如何在没有 foreach 循环的情况下从查询中获取单行?
【发布时间】:2013-09-13 03:56:49
【问题描述】:

我的数据库中有一个表ViewRight,包含三列:

  1. user_id (FK-int)
  2. folder_id(PK-int)
  3. 文件夹名称(varchar(MAX))

我在 C# 代码中编写了查询来获取表的值。我在下面写了这个查询来获取值 ViewRight 提供的user_id 表。

var query2 = from p in dbContext.ViewRights where p.user_id==user_id select p;

问题我必须使用 foreach 循环来获取提供的 user_id 的 folder_id 值和 folder_name 的值。这个 foreach 循环只有一个值。我不想将foreach loop 用于单个值。我还有其他方法可以在不使用 foreach 循环的情况下实现这一点。

【问题讨论】:

    标签: c# .net sql-server


    【解决方案1】:
    var vr = query2.SingleOrDefault(x => x.user_id == userid); 
    if (vr != null)
    {
        Console.WriteLine(vr.folder_id);
    }
    

    【讨论】:

      【解决方案2】:

      使用var vr = query2.SingleOrDefault(x => x.user_id == userid); if(vr != null) Console.WriteLine(vr.folder_id);

      我不敢相信 John Saunders 只是抄袭了我的答案!

      【讨论】:

      • 添加了空引用检查。
      • John 包含了一个空引用检查。现在你已经做了同样的事情(尽管括号会更容易看到),我将删除我的反对票。
      【解决方案3】:

      如果只返回一条记录。 var query2 = (from p in dbContext.ViewRights where p.user_id==user_id select p).FirstOrDefault();

      【讨论】:

      • Ryan 是否可以将此查询的结果添加到 List 中?
      • 您要添加什么到列表中?但无论是单个元素还是整个记录都应该能够相当容易地添加到列表中。
      • 如果有两个值呢?
      • 我应该为这个问题再开一张票吗?
      • 我想你可以在这里问它,只是给我一个你想要做的例子。
      【解决方案4】:

      .SingleOrDefault 将获得一个或多个计数记录

      使用

      .FirstOrDefault();

      我选择了 .FirstOrDefault

      【讨论】:

      • 请更好地解释 SingleOrDefault。
      • 这不是 SingleOrDefault 会做的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2014-09-26
      • 2019-09-02
      • 1970-01-01
      相关资源
      最近更新 更多