使用LINQ TO SQL选择单行

8 c# linq-to-sql

我开始处理LINQ To SQL,我尝试解决这个原始问题.我有一个非常简单的表,有两列.

  • 尼克 - 钥匙,独一无二
  • 密码

我想用一些缺口值删除行.

我用这个方法:

    public void DeleteSpiritUser(string nick)
    {
        var user = from u in _dc.Spirit_Users where u.Nick == nick select u;

        using (var scope = new TransactionScope())
        {
            _dc.Spirit_Users.DeleteOnSubmit(user.First());

            try
            {
                _dc.SubmitChanges();
            }
            catch (Exception exception)
            {
                throw exception;
            }
            scope.Complete();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是我必须使用user.First()如果我想要一行,我想用LINQ选择只有一行知道IEnumerable,因为Nick是唯一的.

mar*_*c_s 15

试试这个 - 只选择第一个(如果存在),只有在你得到一个值时才删除:

public void DeleteSpiritUser(string nick)
{
    var user = (from u in _dc.Spirit_Users 
                where u.Nick == nick 
                select u).SingleOrDefault();

    if(user != null)
    {
       using (var scope = new TransactionScope())
       {
           _dc.Spirit_Users.DeleteOnSubmit(user);
           _dc.SubmitChanges();
           scope.Complete();
       }
   }
}
Run Code Online (Sandbox Code Playgroud)


cjk*_*cjk 6

你可以做:

var user = _dc.Spirit_Users.Single(u => u.Nick == nick);
Run Code Online (Sandbox Code Playgroud)

  • 或者使用SingleOrDefault,如果找不到任何内容,则返回null(或者更确切地说是默认值). (2认同)