linq语句的一个小问题。

时间:2022-01-12 17:37:15

     StudentDataContext sdc = new StudentDataContext();
     public List<STUDENT> GetList()
        {
            var q = from s in sdc.STUDENT select s;
            return q.ToList<STUDENT>();
        }


用上面的方法会把student表中的所有字段都查出来,即 select * from Student

现在如果要求只查姓名和性别,即select sname,ssex from student
linq语句要如何写?
如果写成from s in sdc.STUDENT select new {s.sname,s.ssex};
那么q.ToList<STUDENT>();就不能编译,返回值为List<STUDENT>类型总不会错,应该怎么办?

错误:System.Linq.IQueryable<AnonymousType#1>”不包含“ToList”的定义,并且最佳扩展方法重载“System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)”的某些参数无效


6 个解决方案

#1


晕,小问题啊,麻烦来人帮个忙啊!~

#2


你返回是给控件赋值还是?
from s in sdc.STUDENT select new {s.sname,s.ssex};
这样是取出姓名和性别的

你可以改成这样试下
StudentDataContext sdc = new StudentDataContext();
     public List<STUDENT> GetList()
        {
            var q = from s in sdc.STUDENT select s;
            return q.ToList();
        }


如果是给控件赋值的话你可以直接这样,比如
repeater1.datasource=from s in sdc.STUDENT select new {s.sname,s.ssex};
repeater1.databind();

#3


楼上方法可行,可是如果我要通过方法返回一个集合,然后给控件赋值怎么办?
如果搞三层的话肯定要分开的啊~

#4


你要求真奇怪~既然只要其中的几个字段,为什么还要转换为STUDENT类型~?

#5


楼主的目的是取出指定的字段,那么最好不要使用ToList<T> ,而是通过显示的声明来实现读取 
例如:

StudentDataContext sdc = new StudentDataContext();
     public List<STUDENT> GetList()
        {
            var q = from s in sdc.STUDENT select new STUDENT{Sex = s.Sex,Name = s.Name};
            return q.ToList();
        }


#6


楼上方法可行,赞个~!

#1


晕,小问题啊,麻烦来人帮个忙啊!~

#2


你返回是给控件赋值还是?
from s in sdc.STUDENT select new {s.sname,s.ssex};
这样是取出姓名和性别的

你可以改成这样试下
StudentDataContext sdc = new StudentDataContext();
     public List<STUDENT> GetList()
        {
            var q = from s in sdc.STUDENT select s;
            return q.ToList();
        }


如果是给控件赋值的话你可以直接这样,比如
repeater1.datasource=from s in sdc.STUDENT select new {s.sname,s.ssex};
repeater1.databind();

#3


楼上方法可行,可是如果我要通过方法返回一个集合,然后给控件赋值怎么办?
如果搞三层的话肯定要分开的啊~

#4


你要求真奇怪~既然只要其中的几个字段,为什么还要转换为STUDENT类型~?

#5


楼主的目的是取出指定的字段,那么最好不要使用ToList<T> ,而是通过显示的声明来实现读取 
例如:

StudentDataContext sdc = new StudentDataContext();
     public List<STUDENT> GetList()
        {
            var q = from s in sdc.STUDENT select new STUDENT{Sex = s.Sex,Name = s.Name};
            return q.ToList();
        }


#6


楼上方法可行,赞个~!