在LINQ to SQL中检索单个logging结果的最佳方法

如果我查询关键字段的条件如下:

var user = from u in dc.Users where u.UserName == usn select u; 

我知道我会得到零结果或一个结果。 我仍然应该继续前进,并使用for-each来检索结果,或者有另一种首选的方法来处理这种情况。

6 Solutions collect form web for “在LINQ to SQL中检索单个logging结果的最佳方法”

尝试这样的事情:

 var user = (from u in dc.Users where u.UserName == usn select u).FirstOrDefault(); 

如果没有find这样的元素,则FirstOrDefault方法返回满足指定条件或缺省值的序列的第一个元素。

为什么不喜欢

 var user = dc.Users.SingleOrDefault(u=> u.UserName==usn); 

另外应该注意的是,First / FirstOrDefault / Single / SingleOrDefault是LINQ to Sql命令的执行点。 由于LINQ语句在此之前还没有被执行过,因此它能够影响生成的SQL(例如,它可以向sql命令添加一个TOP 1)

我会使用First()或FirstOrDefault()。

区别在于:First()将会有一个exception抛出,如果没有行可以被​​发现。

我会使用SingleOrDefault方法。

 var user = (from u in dc.Users where u.UserName == usn select u).SingleOrDefault(); 

另一种select是使用包含(用户名)而不是“==”

 var user = (from u in dc.UserInfo where u.Users.Contains(username) select u).SingleOrDefault(); 
  • 如何从使用LINQ to SQL的c#方法返回匿名types
  • LINQ to SQL中的内部连接的语法是什么?
  • NHibernate与LINQ to SQL
  • 人们如何testing使用Linq to SQL的代码
  • ASP MVC:什么时候IController Dispose()被调用?
  • Linq:有条件地给where子句添加条件
  • LINQ to SQL是否被弃用?
  • LINQPad,使用多个数据上下文
  • linq中的.edmx和.dbml文件有什么区别?
  • 返回匿名types结果?
  • LINQ to SQL Where子句可选标准