var resultt = from c in ent.Student where c.Name.Contains("王") select new { c.Name, c.Sex, c.StudentId }; var data = ent.Student.Select(p => new { p.Name, p.E_mail, p.ClassId }).Where(p => p.Name.Contains("王")); 怎么用这样: List<Student>resultt =( from c in ent.Student where c.Name.Contains("王") select new { c.Name, c.Sex, c.StudentId }).ToList(); List<Student>data = ent.Student.Select(p => new { p.Name, p.E_mail, p.ClassId }).Where(p => p.Name.Contains("王")).ToList(); 但是用了匿名类报错
这个错误简单的说,就是你不能把一只动物(匿名动物)硬变成一匹马。
可行的方法是
var data = ent.Student.Select(p => new { p.Name, p.E_mail, p.ClassId }).Where(p => p.Name.Contains("王")).ToList(); var newList= new List<Student>(); foreach(var item in data) { newList.Add(new Student { Name=item.Name, E_mail=item.E_mail, ClassId=item.ClassId }); }
随便乱写的,不保证编译通过,你当作伪代码看好了。
List<Student> Data= ent.Student.ToList();
为什么不能像这样 把我想查询的字段 写到LIST中去
@落幕。: 简单的说,就是微软没有把世界上所有的代码都写好,所以才有程序员这个工作。
微软认为我写到这样就够了,不够的你自己补上。
你要是觉得这个需求经常要用,就自己包装一个函数呗。
@爱编程的大叔: 好吧
ent.Student.Where(p => p.Name.Contains("王")).Select(p => new Student{ Name=p.Name, E_mail=p.E_mail, ClassId =p.ClassId }).ToList();
匿名类.当然要用var接.你要输出List<Student>data 那就不要用匿名类.
简单来说.你要清楚你想要什么.然后去想怎么做.不要搞错顺序.先写完.然后问为什么不是你想的那样.因为你做的时候就没想过要的东西是什么样.
List<Student> data1 = ent.Student.Where(p => p.Name.Contains("王")).Select(p => new Student { Name = p.Name, E_mail = p.E_mail, ClassId = p.ClassId }).ToList();
这样写 会报:在 LINQ to Entities 查询中无法构造实体或复杂类型
@落幕。: 那就把那个返回student的代码放到tolist后面去.话说你看到错误的提示的时候都不想一下的吗?
用编辑器的
– BUTTERAPPLE 6年前插入代码
,格式化一下呗。@BUTTERAPPLE: OK了
– 落幕。 6年前