我开始处理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)
你可以做:
var user = _dc.Spirit_Users.Single(u => u.Nick == nick);
Run Code Online (Sandbox Code Playgroud)