首页 新闻 会员 周边

.NET EF 使用匿名类 怎么返回一个集合 tolist

0
悬赏园豆:10 [已解决问题] 解决于 2018-08-31 13:52
   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();
但是用了匿名类报错
落幕。的主页 落幕。 | 初学一级 | 园豆:2
提问于:2018-03-19 15:56

用编辑器的插入代码,格式化一下呗。

BUTTERAPPLE 6年前

@BUTTERAPPLE: OK了

落幕。 6年前
< >
分享
最佳答案
0

这个错误简单的说,就是你不能把一只动物(匿名动物)硬变成一匹马。

可行的方法是

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

随便乱写的,不保证编译通过,你当作伪代码看好了。

收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30839 | 2018-03-19 16:55
List<Student> Data= ent.Student.ToList();

为什么不能像这样 把我想查询的字段 写到LIST中去

落幕。 | 园豆:2 (初学一级) | 2018-03-19 17:04

@落幕。: 简单的说,就是微软没有把世界上所有的代码都写好,所以才有程序员这个工作。

微软认为我写到这样就够了,不够的你自己补上。

你要是觉得这个需求经常要用,就自己包装一个函数呗。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-03-19 17:09

@爱编程的大叔: 好吧

落幕。 | 园豆:2 (初学一级) | 2018-03-19 17:09
其他回答(1)
0

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 那就不要用匿名类.

简单来说.你要清楚你想要什么.然后去想怎么做.不要搞错顺序.先写完.然后问为什么不是你想的那样.因为你做的时候就没想过要的东西是什么样.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-03-19 16:43
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 查询中无法构造实体或复杂类型

支持(0) 反对(0) 落幕。 | 园豆:2 (初学一级) | 2018-03-19 16:52

@落幕。: 那就把那个返回student的代码放到tolist后面去.话说你看到错误的提示的时候都不想一下的吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2018-03-19 17:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册