EFCore某张表中获取某几个字段
程序员文章站
2024-01-14 12:10:34
EFCore某张表中获取某几个字段 [toc] 1.背景 在前后端分离的应用场景中,某张统计表有20几个字段,但是前端可能只用到4个字段,这样就涉及到获取某个表中的部分字段值。本文介绍3种方法。 2.法一:linq 2.1 使用Select方法 2.2 使用ForEach方法 2.3 其他参考代码 ......
efcore某张表中获取某几个字段
1.背景
在前后端分离的应用场景中,某张统计表有20几个字段,但是前端可能只用到4个字段,这样就涉及到获取某个表中的部分字段值。本文介绍3种方法。
2.法一:linq
2.1 使用select方法
list<emplayee> emplayeelist = getemplayeelist(); //获取员工信息列表 int[] empids = emplayeelist.select(a => a.id).toarray(); //获取员工编号数组
2.2 使用foreach方法
list<emplayee> emplayeelist = getemplayeelist(); //获取员工信息列表 string empids = ""; emplayeelist.foreach(a => empids += a.id + ","); empids = empids.trimend(','); console.writeline(empids); //输出:1,2,3
2.3 其他参考代码
/// <summary> /// 员工信息类 /// </summary> public class emplayee { /// <summary> /// 编号 /// </summary> public int id { get; set; } /// <summary> /// 姓名 /// </summary> public string name { get; set; }
/// <summary> /// 获取员工信息列表 /// </summary> /// <returns></returns> public static list<emplayee> getemplayeelist() { list<emplayee> emplayeelist = new list<emplayee>(); emplayee emplayee1 = new emplayee() { id = 1, name = "张三" }; emplayee emplayee2 = new emplayee() { id = 2, name = "李四" }; emplayee emplayee3 = new emplayee() { id = 3, name = "王五" }; emplayeelist.add(emplayee1); emplayeelist.add(emplayee2); emplayeelist.add(emplayee3); return emplayeelist; }
3.法二:iqueryble
3.1 参考例子一
我有个新闻表
id,title,body,createtime,author,click
使用ef4.1 仅仅读取 id,title,createtime 并显示在页面上。
public static list<newinfo> gethotnews() { list<newinfo> list; list = (from n in db.newinfoes where n.istop == 1 orderby n.publishtime descending select new { title = n.title, newid = n.newid, publishtime = n.publishtime }).tolist(); return list; } 改为 public static list<newinfo> gethotnews() { list<newinfo> list; list = (from n in db.newinfoes where n.istop == 1 orderby n.publishtime descending .select(n => new newinfo { title = n.title, newid = n.newid, publishtime = n.publishtime }); return list; }
备注:只是ienumerable是把所有数据拉到内存里筛选,iqueryable会形成sql直接在库里查询返回
3.2 参考例子二
4.法三:建立一个对象,然后配置一个automapper,然后将查询结果匹配过来
具体可以自行尝试
参考:
1.网友 kawhi(1585955375), 奥特曼迪斯特洛夫斯基(479663032)
2.https://blog.csdn.net/lcnmdfx/article/details/8332401
3.https://blog.csdn.net/pan_junbiao/article/details/51757904