none
序列包含一个以上的元素 linq RRS feed

  • 问题

  •  [Table]
      public class DEPT
      {
        private EntitySet<EMP> eMP;
        public DEPT()
        {
          eMP = new EntitySet<EMP>();
        }
    
        [Column(IsPrimaryKey=true)]
        public int DEPTNO { get; set; }
        [Column]
        public string DNAME { get; set; }
    
        
        [Association(Storage = "eMP", OtherKey = "DEPTNO")]
        public EntitySet<EMP> EMP
        {
          get { return eMP; }
          set { eMP.Assign(value); }
        }
      }
    
      [Table]
      public class EMP
      {
        [Column(IsPrimaryKey = true)]
        public int EMPNO { get; set; }
        [Column]
        public string ENAME { get; set; }
        [Column]
        public decimal SAL { get; set; }
    
      }
    

    上面连个实体类是 Oracle中的EMP 和DEPT表。

    当我执行下面代码的时候;

          Table<DEPT> tbDEPT = table.DEPT;
          var DEPT = from dept in tbDEPT select dept;
          foreach (var d in DEPT)//会抛出 “序列包含一个以上的元素”异常
          {
           
          }
    

    DEPT和EMP是一对多关系,所以我在实体类EMP中定义了 private EntitySet<EMP> eMP;

    上述是整个代码。不知道这么查询为什么不对,各位大哥希望能帮帮我

    2011年3月24日 7:35

答案

  •       Table<DEPT> tbDEPT = table.DEPT;

          var DEPT = from dept in tbDEPT select dept;

          foreach (var d in DEPT)//会抛出 “序列包含一个以上的元素”异常

          {

          

          }

    我想是上面代码出问题了,因为你有一个表叫做DEPT, 然后你上面的代码又定义了一个DEPT:“var DEPT = from dept in tbDEPT select dept;”

    所以在下面的foreach的时候代码不能分辨var d 是在哪个DEPT里面,因此会报出错误。 改正方法就是换一个变量名试试。

    希望能帮到你!


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月28日 8:19
    版主
  •  [Table]
     public class DEPT
     {
      private EntitySet<EMP> eMP;
      public DEPT()
      {
       eMP = new EntitySet<EMP>();
      }
    
      [Column(IsPrimaryKey=true)]
      public int DEPTNO { get; set; }
      [Column]
      public string DNAME { get; set; }
    
      
      [Association(Storage = "eMP", OtherKey = "DEPTNO")]
      public EntitySet<EMP> EMP
      {
       get { return eMP; }
       set { eMP.Assign(value); }
      }
     }
    
     [Table]
     public class EMP
     {
      [Column(IsPrimaryKey = true)]
      public int EMPNO { get; set; }
      [Column]
      public string ENAME { get; set; }
      [Column]
      public decimal SAL { get; set; }
    
     }
    

    上面连个实体类是 Oracle中的EMP 和DEPT表。

    当我执行下面代码的时候;

       Table<DEPT> tbDEPT = table.DEPT;
       var DEPT = from dept in tbDEPT select dept;
       foreach (var d in DEPT)//会抛出 “序列包含一个以上的元素”异常
       {
        
       }
    

    DEPT和EMP是一对多关系,所以我在实体类EMP中定义了 private EntitySet<EMP> eMP;

    上述是整个代码。不知道这么查询为什么不对,各位大哥希望能帮帮我

     Table<DEPT> tbDEPT = table.DEPT;
       var query= from dept in tbDEPT select dept;
       foreach (var d in query)//会抛出 “序列包含一个以上的元素”异常
       {
        
       }

    注意查询结果不要与映射类DEPT重名

    My CSDN HomePage
    2011年4月4日 4:30

全部回复

  • 你的实体类是自己写的吗?还是用工具生成的?如果是工具生成的,用的是什么工具?
    田田qq:764574267
    2011年3月26日 6:54
  •       Table<DEPT> tbDEPT = table.DEPT;

          var DEPT = from dept in tbDEPT select dept;

          foreach (var d in DEPT)//会抛出 “序列包含一个以上的元素”异常

          {

          

          }

    我想是上面代码出问题了,因为你有一个表叫做DEPT, 然后你上面的代码又定义了一个DEPT:“var DEPT = from dept in tbDEPT select dept;”

    所以在下面的foreach的时候代码不能分辨var d 是在哪个DEPT里面,因此会报出错误。 改正方法就是换一个变量名试试。

    希望能帮到你!


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月28日 8:19
    版主
  •  [Table]
     public class DEPT
     {
      private EntitySet<EMP> eMP;
      public DEPT()
      {
       eMP = new EntitySet<EMP>();
      }
    
      [Column(IsPrimaryKey=true)]
      public int DEPTNO { get; set; }
      [Column]
      public string DNAME { get; set; }
    
      
      [Association(Storage = "eMP", OtherKey = "DEPTNO")]
      public EntitySet<EMP> EMP
      {
       get { return eMP; }
       set { eMP.Assign(value); }
      }
     }
    
     [Table]
     public class EMP
     {
      [Column(IsPrimaryKey = true)]
      public int EMPNO { get; set; }
      [Column]
      public string ENAME { get; set; }
      [Column]
      public decimal SAL { get; set; }
    
     }
    

    上面连个实体类是 Oracle中的EMP 和DEPT表。

    当我执行下面代码的时候;

       Table<DEPT> tbDEPT = table.DEPT;
       var DEPT = from dept in tbDEPT select dept;
       foreach (var d in DEPT)//会抛出 “序列包含一个以上的元素”异常
       {
        
       }
    

    DEPT和EMP是一对多关系,所以我在实体类EMP中定义了 private EntitySet<EMP> eMP;

    上述是整个代码。不知道这么查询为什么不对,各位大哥希望能帮帮我

     Table<DEPT> tbDEPT = table.DEPT;
       var query= from dept in tbDEPT select dept;
       foreach (var d in query)//会抛出 “序列包含一个以上的元素”异常
       {
        
       }

    注意查询结果不要与映射类DEPT重名

    My CSDN HomePage
    2011年4月4日 4:30