var pers = new List<Person> { new Person { username = "abc", age = 15 }, new Person { username = "def", age = 20 }, new Person { username = "eee", age = 25 } };
            var p = from pe in pers where pe.age > 15 select pe;
             foreach (var sele in p)
                 MessageBox.Show (sele .username);中提示:
错误 1 嵌入的语句不能是声明或标记语句
这是什么情况?

解决方案 »

  1.   


    //测试没有发现问题
    void Main()
    {
    var pers = new List<Person> { new Person { username = "abc", age = 15 }, new Person { username = "def", age = 20 }, new Person { username = "eee", age = 25 } };
    var p = from pe in pers where pe.age > 15 select pe;
     foreach (var sele in p)
    Console.WriteLine(sele .username);/*
    def
    eee
    */}
    class Person
    {
     public string username{get;set;}
     public int age{get;set;}
    }
      

  2.   

        foreach (var sele in p)
                     MessageBox.Show (sele .username);
    ================
    修改成:
        foreach (var sele in p){
                     MessageBox.Show (sele .username);}
    或p.ToList().ForEach(sele=>Console.WriteLine(sele .username));
      

  3.   


    var pers = new[]{ 
                    new  { username = "abc", age = 15 }, 
                    new  { username = "def", age = 20 }, 
                    new  { username = "eee", age = 25 } 
                };
                var p = from pe in pers where pe.age > 15 select pe;这样就行了,数组,为什么要用list,为什么还要加个名Person??
      

  4.   

    估计你没有定义person类,或当前上下文中不可视,如果定义了,也应该没有问题的, 因为它找不到person的定义。
    如果用匿名对象你就没必要去指定类。
      

  5.   

    person类是定义了,刚才试了一下你说的数组,还是提示那个错。声明匿名对象时
    var pers = new[]{ 
                    new  { username = "abc", age = 15 }, 
                    new  { username = "def", age = 20 }, 
                    new  { username = "eee", age = 25 } 
                };这个var下面有红色的下划线,提示:嵌入的语句不能是声明或标记语句