在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:有条件地给where子句添加条件
  • LINQ插入后可以返回'id'字段吗?
  • 如何比较只有date时间DateTimetypesLinq to SQL与entity framework?
  • 返回IEnumerable <T>与IQueryable <T>
  • 有没有人在unit testingSQL存储过程中取得任何成功?
  • 什么时候应该处理数据上下文
  • 我怎样才能拒绝Linq到SQL的DataContext中的所有更改?
  • Linq to Sql:如何快速清理表格
  • LINQ to SQL - 左外部连接多个连接条件
  • 数据库模式更改后更新LINQ to SQL类的最佳方法
  • 如何更新多行使用LINQ到SQL?