注册 登录
编程论坛 F#论坛

LINQ TO SQL 之 Single ”序列中不包含任何元素“ 异常

tyb0818 发布于 2010-07-14 14:20, 7517 次点击
            当查询一个对象是否存在时,如果用Single 方法查询,如
            dbDataContext db=new dbDataContext ();
          User user=db.User.Single(u=>u.Id==Id);
            如果user为空的话 会出现异常 “序列中不包含任何元素”
            所以要用到Any方法 Any返回的是bool类型 ,当返回真的时候再用Single 方法去找对象
        bool flag = db.User.Any(a => a.Id== Id);
            if (flag)
            {
                User user=db.User.Single(u=>u.Id==Id);   
            }

3 回复
#2
playermaker2012-01-20 14:12
这是教人家用吧??
#3
belin20002012-09-13 15:17

dbDataContext db=new dbDataContext ();
出现这个‘序列中不包含任何元素’是说明你的ilist<T>是null,和你的single无关.
User user=db.count>0?db.User.SingleOrDefault(u=>u.Id==Id):new user();
一般情况下使用 SingleOrDefault 的,避免了single不存在的问题。返回的user来判断是否为null或者user的属性id是否为0。
1