欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 参考例子二

EFCore某张表中获取某几个字段

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