日期:2014-05-20  浏览次数:20741 次

linq语句的一个小问题。
C# code

     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>)”的某些参数无效




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

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();
        }