EFCore某張表中獲取某幾個字段


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM