none
异常详细信息: System.InvalidOperationException: 序列不包含任何元素 RRS feed

  • 问题

  • 行 42:  MyUserDataContext udc = new MyUserDataContext();
    行 43: //通过创建Lambda表达式来获取用户
    行 44: User user = udc.User.Single(u=>u.uid==uid);
    行 45: return user;
    行 46: }

    源文件: F:\代码练习\MyLinQ\MyLinQ.DAL\LinQscrvice.cs    行: 44

    堆栈跟踪:

    [InvalidOperationException: 序列不包含任何元素]
    System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1928
    System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +189
    System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +660
    System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute(Expression expression) +60
    System.Linq.Queryable.Single(IQueryable`1 source, Expression`1 predicate) +509
    MyLinQ.DAL.LinQscrvice.GetUserById(Int32 uid) in F:\代码练习\MyLinQ\MyLinQ.DAL\LinQscrvice.cs:44
    MyLinQ.BLL.UserManager.GetUserById(Int32 uid) in F:\代码练习\MyLinQ\MyLinQ.BLL\UserManager.cs:18

    [TargetInvocationException: 调用的目标发生了异常。]
    System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +0
    System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +69
    System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +311
    System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +22
    System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +48
    System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +921
    System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +3274
    System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +97
    System.Web.UI.WebControls.DataBoundControl.PerformSelect() +225
    System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +127
    System.Web.UI.WebControls.DetailsView.DataBind() +29
    System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +107
    System.Web.UI.WebControls.DetailsView.EnsureDataBound() +322
    System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +131
    System.Web.UI.Control.EnsureChildControls() +162
    System.Web.UI.Control.PreRenderRecursiveInternal() +120
    System.Web.UI.Control.PreRenderRecursiveInternal() +307
    System.Web.UI.Control.PreRenderRecursiveInternal() +307
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4836


    版本信息:  Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1
    2011年3月6日 9:18

答案

  • 你好!

     

    我想楼上想说的应该是SingleOrDefault()方法。这个方法返回序列的唯一元素,如果序列是空的,就返回一个默认值。如果在序列中有一个以上的元素,那么这个方法会抛出一个异常。

    所以,请换上SingleOrDefault()方法试试看~

    希望能帮到你!

     

    谢谢,


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月7日 2:08
    版主

全部回复

  • 换成singledefault
    • 已建议为答案 gsralex 2011年3月8日 4:03
    • 取消建议作为答案 gsralex 2011年3月8日 4:03
    • 已建议为答案 gsralex 2011年3月8日 4:03
    • 取消建议作为答案 gsralex 2011年3月8日 4:03
    • 已建议为答案 gsralex 2011年3月8日 4:03
    • 取消建议作为答案 gsralex 2011年3月8日 4:03
    • 已建议为答案 gsralex 2011年3月8日 4:03
    • 取消建议作为答案 gsralex 2011年3月8日 4:03
    • 已建议为答案 gsralex 2011年3月8日 4:03
    • 取消建议作为答案 gsralex 2011年3月8日 4:03
    • 已建议为答案 gsralex 2011年3月8日 4:03
    2011年3月7日 0:55
  • 你好!

     

    我想楼上想说的应该是SingleOrDefault()方法。这个方法返回序列的唯一元素,如果序列是空的,就返回一个默认值。如果在序列中有一个以上的元素,那么这个方法会抛出一个异常。

    所以,请换上SingleOrDefault()方法试试看~

    希望能帮到你!

     

    谢谢,


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月7日 2:08
    版主