如果我想在我的数据库中找到确切的搜索结果,我该用什么代替"FirstOrDefault()"?

Ecn*_*lyr 2 c# asp.net-mvc entity-framework asp.net-mvc-3

我目前在我的控制器中使用以下代码:

Instructor instructor = db.Instructors.FirstOrDefault(
    o => o.UserName == User.Identity.Name);
Run Code Online (Sandbox Code Playgroud)

用户名选择某人.我的理解是,如果我的用户具有相似的用户名,我将无法使用"FirstOrDefault()"(当我有名为"MrUserOne"的用户搜索"MrUser"时,"MrUserTwo"和"MrUser"可能会产生"MrUserOne",因为这是"第一个"出现的搜索结果),如果我对"FirstOrDefault"未来遇到的困难的理解是正确的,我应该在它的位置使用什么?

或者我对FirstOrDefault如何运作的理解错了?

Jar*_*Par 8

您似乎不太了解==操作员在此方案中的工作原理.假设UserNameName值都是,string那么==将进行精确的序数匹配.该名称"MrUser"根本不匹配"MrUserOne".它只会匹配"MrUser".

话虽这么说,这个代码将返回其第一个用户Name值完全匹配o.UserName或者null如果没有这样做.


Chr*_*ris 5

JaredPar说的很正确.但是如果你期望的是一个结果,你也可以使用SingleOrDefault.您可以在此Stackoverflow问题中阅读更多相关信息:LINQ:何时使用SingleOrDefault与FirstOrDefault()一起使用过滤条件