检索单个字段值时的FirstOrDefault()

乔尔

这种事情一直困扰着我,所以我想我应该从你们这些聪明的人那里寻找一种“更好的方式”。

我有一个查询,我想返回单个字段的值,它是一个int值。

int thivalue = (from q in context.tablename    
    where q.ID == id
    orderby q.fieldname descending
    select q).FirstOrDefault().fieldname;

问题是查询可能不返回任何结果,在这种情况下,我希望值为0。

当然,如果没有结果,我将尝试访问不存在的字段时遇到异常。因此,似乎我的选择是a)返回该行(我不需要),以便我可以测试null并从那里去,或者b)将try换行并将其设置为0,在那里似乎有点笨拙。

我以为DefaultIfEmpty()可能对我有帮助,但是如果我想要的只是以单个值结束,似乎没有帮助。

那么执行此操作的正确方法是什么?当我只需要一个值时,是否只是想不想返回整行?

附录:(如果有人有兴趣)

伯克利兄弟公司在他的回答中给了我两个明显相同的选择。但是只有第二个给了我正确的结果。OrderByDescending似乎有些问题。使用Glimpse,我查看了每个查询。

    var nextSequence =  db.PaneContents
                       .Where(q=>q.QuizPaneID == quizPaneId)
                       .OrderByDescending(q=>q.Sequence)
                       .Select (q=>q.Sequence)
                       .DefaultIfEmpty()
                       .First();

产生此查询:

SELECT 
CASE WHEN ([Limit1].[C1] IS NULL) THEN 0 ELSE [Limit1].[Sequence] END AS [C1]
FROM ( SELECT TOP (1) 
    [Project1].[Sequence] AS [Sequence], 
    [Project1].[C1] AS [C1]
    FROM  ( SELECT 1 AS X ) AS [SingleRowTable1]
    LEFT OUTER JOIN  (SELECT 
        [Extent1].[Sequence] AS [Sequence], 
        cast(1 as tinyint) AS [C1]
        FROM [dbo].[PaneContents] AS [Extent1]
        WHERE [Extent1].[QuizPaneID] = 274 /* @p__linq__0 */ ) AS [Project1] ON 1 = 1
)  AS [Limit1]

var nextSequence = (from q in db.PaneContents
                                where q.QuizPaneID == quizPaneId
                                orderby q.Sequence descending
                                select q.Sequence).FirstOrDefault();

产生此查询:

SELECT TOP (1) 
[Project1].[Sequence] AS [Sequence]
FROM ( SELECT 
    [Extent1].[Sequence] AS [Sequence]
    FROM [dbo].[PaneContents] AS [Extent1]
    WHERE [Extent1].[QuizPaneID] = 274 /* @p__linq__0 */
)  AS [Project1]
ORDER BY [Project1].[Sequence] DESC

看起来在第一个示例中,OrderByDescending()在某种程度上迷失了翻译?无论如何,出于我的目的,不需要DefaultIfEmpty(),第二个示例更加简单。我只是以为它不起作用很奇怪(通过“没有作用”,我是指它选择了错误的值,因为它没有按降序排列),因为它看起来应该正确。

伯克利兄弟

如果我对您的理解正确,则可以尝试以下操作:

int thisvalue = context.tablename
                       .Where(q => q.ID == id)
                       .OrderByDescending(q => q.fieldname)
                       .Select(q => q.fieldname)
                       .FirstOrDefault();

要么

int thisvalue = (from q in context.tablename    
                 where q.ID == id
                 orderby q.fieldname descending
                 select q.fieldname).FirstOrDefault();

在调用FirstOrDefault()之前选择q.fieldname将使SQL仅返回第一项字段名(而不是整个第一行)。


另外,q.ID是否唯一?如果是这样,则您无需按字段名称排序,可以使用SingleOrDefault代替FirstOrDefault。“单一”确保存在一个元素,而“第一”确保存在至少一个元素。应该使用“单个”陈述您的假设,这对于更多的自我记录代码而言是唯一的。

int thisvalue = context.tablename
                       .Where(q => q.ID == id)
                       .Select(q => q.fieldname)
                       .SingleOrDefault();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检索单个字段值时的FirstOrDefault()

来自分类Dev

使用join(codeigniter)从单个字段中检索并打印逗号分隔符后的值

来自分类Dev

从单个字段过滤多个值-Django

来自分类Dev

在多个字段中搜索单个值

来自分类Dev

elasticsearch检索嵌套对象-不是单个字段

来自分类Dev

使用PHP从远程JSON文件检索数据(单个字段)

来自分类Dev

如何在Java中从MongoDB检索单个字段

来自分类Dev

如何从 Laravel 5.2 中的表中检索单个字段

来自分类Dev

如果等于单个值,则设置整个字段行值

来自分类Dev

从bean检索字段值时出错

来自分类Dev

单个字段的数组

来自分类Dev

如何在mysql的单个字段中插入多个值

来自分类Dev

使用SQLite为单个字段插入默认值

来自分类Dev

Firebase通过添加其值来更新单个字段

来自分类Dev

Elasticsearch查询将多个值匹配到单个字段

来自分类Dev

Dojo datagrid:单个字段中有多个值

来自分类Dev

在Twig的单个字段中显示多个值

来自分类Dev

如何更新多个 solr 文档中的单个字段值

来自分类Dev

jq:在转换为CSV时编辑单个字段

来自分类Dev

使用无脂肪框架从数据库检索单个字段的最简单方法?

来自分类Dev

使用Facebook PHP SDK在单个请求中检索多个字段

来自分类Dev

CakePHP 3-从数据库检索单个字段的最简单方法

来自分类Dev

使用Facebook PHP SDK在单个请求中检索多个字段

来自分类Dev

单个字段上的RequiredFieldValidator

来自分类Dev

当我有5个使用JavaScript的字段时,如何验证表单中的单个字段?

来自分类Dev

使用JasperReports API从bean异常检索字段值时出错

来自分类Dev

选中时从表TD内的输入字段中检索值

来自分类Dev

使用JasperReports API从bean异常检索字段值时出错

来自分类Dev

JasperReport iReport:JRException:从bean检索字段值时出错

Related 相关文章

  1. 1

    检索单个字段值时的FirstOrDefault()

  2. 2

    使用join(codeigniter)从单个字段中检索并打印逗号分隔符后的值

  3. 3

    从单个字段过滤多个值-Django

  4. 4

    在多个字段中搜索单个值

  5. 5

    elasticsearch检索嵌套对象-不是单个字段

  6. 6

    使用PHP从远程JSON文件检索数据(单个字段)

  7. 7

    如何在Java中从MongoDB检索单个字段

  8. 8

    如何从 Laravel 5.2 中的表中检索单个字段

  9. 9

    如果等于单个值,则设置整个字段行值

  10. 10

    从bean检索字段值时出错

  11. 11

    单个字段的数组

  12. 12

    如何在mysql的单个字段中插入多个值

  13. 13

    使用SQLite为单个字段插入默认值

  14. 14

    Firebase通过添加其值来更新单个字段

  15. 15

    Elasticsearch查询将多个值匹配到单个字段

  16. 16

    Dojo datagrid:单个字段中有多个值

  17. 17

    在Twig的单个字段中显示多个值

  18. 18

    如何更新多个 solr 文档中的单个字段值

  19. 19

    jq:在转换为CSV时编辑单个字段

  20. 20

    使用无脂肪框架从数据库检索单个字段的最简单方法?

  21. 21

    使用Facebook PHP SDK在单个请求中检索多个字段

  22. 22

    CakePHP 3-从数据库检索单个字段的最简单方法

  23. 23

    使用Facebook PHP SDK在单个请求中检索多个字段

  24. 24

    单个字段上的RequiredFieldValidator

  25. 25

    当我有5个使用JavaScript的字段时,如何验证表单中的单个字段?

  26. 26

    使用JasperReports API从bean异常检索字段值时出错

  27. 27

    选中时从表TD内的输入字段中检索值

  28. 28

    使用JasperReports API从bean异常检索字段值时出错

  29. 29

    JasperReport iReport:JRException:从bean检索字段值时出错

热门标签

归档