回答
var myLinqObj = db.MyObjects.Take(1).SingleOrDefault();
你可以使用。首先()或.FirstOrDefault()像这样:
Foo foo = query.Select(a => a.Name == "foo").FirstOrDefault();
// Will return a default value if no object is found in the DB
db.Table.SingleOrDefault(x => x.something == someParameter);
或
// Will throw an exception if records are not found
db.Table.Single(x => x.something == someParameter);
感谢迈赫达德的评论......这两条线有已更新。
如果您的查询可能导致返回多条记录,则(如注释中所述)Single()
和SingleOrDefault()
是调用的错误方法。您将保持相同的语法,但分别请拨打First()
和FirstOrDefault()
。
你可以用'.Single(predicate)'替换'.Where(predicate).Single()'。 – 2009-12-18 18:33:35
如果序列中存在多个单个项目,Single()将引发异常。如果你不在意抛出异常,你也可以使用First()或FirstOrDefault()。 – LBushkin 2009-12-18 18:35:06
@Mehrdad - 我做了改变,但两者之间有什么表现差异?我通常更喜欢.Where(谓词).Single(),因为我认为它表达我的意图更清晰一些。 – 2009-12-18 18:36:32
您可以使用First
或Single
。
First
返回第一行,无论是多行还是只有一行。
Single
预计只返回一行,如果有多行则抛出异常。
Single
因此可能是一个更好的选择,如果您希望只有一行,以便您能够立即看到问题并且可以排除故障。
从所有已经表示,如果您使用的是LINQ到XML,我的另外一点是在使用单个元素之后使用Value
属性。
而Select new { *cols* }
如果它是一个列表或数组或表。 示例。 ...选择新的{c.Name,c.Value};
这个技巧是为了让你获得价值。
- 1. LINQ查询返回多个结果
- 2. Linq查询返回重复结果
- 3. LINQ-to-SQL查询返回无结果
- 4. LINQ查询返回多个副本的第一个结果
- 5. JDBC - 一个查询返回的结果
- 6. 查询只返回一个结果
- 7. XPath查询应该返回多个结果,但只返回一个结果
- 8. Solr 4返回0个查询结果,但返回“*:*”查询结果
- 9. 是否有查询从一个文档返回多个结果?
- 10. 无法从查询中返回linq结果
- 11. 查询返回无结果
- 12. PDO查询返回结果
- 13. 从SQL查询返回没有结果
- 14. 从函数返回mongojs查询结果
- 15. 从sql查询返回结果
- 16. SQL查询返回一个结果,不返回0或NULL结果
- 17. 从LINQ查询返回多个流
- 18. SQL查询仅返回唯一结果
- 19. SQL查询中返回从一个表汇总结果列
- 20. 如何从一个查询PHP返回COUNT(*)的结果
- 21. SQL查询只返回1个结果
- 22. 返回多个结果集的查询
- 23. 如何构建一个查询来返回一个结果
- 24. Elasticsearch不返回聚合查询结果,但返回其他查询结果
- 25. PDO - 如果其中任何一个查询返回空结果
- 26. 返回查询结果如果条件
- 27. 检查是否MySQL查询返回一个空结果
- 28. 如何从多个表查询中返回单个结果
- 29. 查看结果,查询返回与“puts”
- 30. 从查询中使用结果子查询返回意外的结果
如果查询“**应该**只返回一个结果”单个更有效,因为如果查询返回多个查询,它会抛出更多错误,并标记错误。 – 2009-12-18 18:36:07
@Martinho Fernandes你是对的,我从来没有使用过单一的 – 2009-12-18 20:41:25