我目前在两个地方使用单个查询从数据库中获取一行.
BlogPost post = (from p in dc.BlogPosts
where p.BlogPostID == ID
select p).Single();
Run Code Online (Sandbox Code Playgroud)
检索行以将数据放入文本框时查询很好,但是当用于检索行以编辑行并将其重新放回数据库时,它会返回错误"Sequence contains no elements".我无法理解为什么它可能在一个实例中找到合适的行而不是另一个实例.
(使用ASP.NET MVC和LINQ)
我有以下问题:
public Boolean Exists(String userName)
{
IRepository<User> = new UserRepository();
User user = userRepository.First(u => u.Name == userName);
if (user == null) return false;
// Exists!
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我无法检查User对象是否为null.在我到达那里之前,我得到InvalidOperationException一句话" 序列中没有元素 ".
这对我来说似乎很奇怪,特别是因为我不想用异常建立控制流(例如封装在try..catch中并在各个部分中返回true/false).
这里发生了什么?这是正常的还是我的存储库有问题(提示?!)
顺便说一句,这个代码工作完美,当存在我正在寻找的元素(用户检索等).它只在没有匹配时才起作用.
我正在尝试使用LINQ解决错误.我正在使用LINQ提取XML节点值.我面临的问题是当XML中没有节点时我遇到Sequence contains no elements错误.我尝试使用DefaultIfEmpty,Singleordefault和Firstordefault.但是它会抛出一个nullpointer异常.我想我的方法不正确.怎样才能用其中一个来解决这个问题呢?
这是我正在使用的LINQ代码.
var costnode6 = doc.Root.Descendants(ns + "SERVICEUPGRADES").Single(c => (string)c.Element(ns + "DELIVERYTIME") == "before 3:30 PM").Element(ns + "TOTAL_COST");
var cost6 = (decimal)costnode6;
Run Code Online (Sandbox Code Playgroud)