从LINQ Query返回一个结果

Ton*_*ion 6 c# linq

如果你有一个只能返回一个结果的选择LINQ查询,你是否必须有一个foreach循环来获得结果?

或者,还有更好的方法?

Jus*_*ner 18

// Will return a default value if no object is found in the DB
db.Table.SingleOrDefault(x => x.something == someParameter);
Run Code Online (Sandbox Code Playgroud)

要么

// Will throw an exception if records are not found
db.Table.Single(x => x.something == someParameter);
Run Code Online (Sandbox Code Playgroud)

感谢Mehrdad的评论...两条线都已更新.

如果您的查询可能导致返回多个记录,那么(如注释中所述)Single()并且SingleOrDefault()是错误的调用方法.你会保持相同的语法,但打电话First()FirstOrDefault()分别.

  • 你可以用`.Single(predicate)`替换`.Where(predicate).Single()`. (3认同)

Tim*_*ren 5

var myLinqObj = db.MyObjects.Take(1).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)


Rya*_*ndy 5

你可以使用FirstSingle.

First 返回第一行,无论是多行还是只有一行.

Single 期望只返回一行,如果有多行则抛出异常.

Single 因此,如果您希望只有一行,则可能是更好的选择,这样您就可以立即看到问题并对其进行故障排除.