EFCore某張表中獲取某幾個欄位
目錄- EFCore某張表中獲取某幾個欄位
- 1.背景
- 2.法一:linq
- 2.1 使用Select方法
- 2.2 使用ForEach方法
- 2.3 其他參考代碼
- 3.法二:IQueryble
- 3.1 參考例子一
- 3.2 參考例子二
- 4.法三:建立一個物件,然后配置一個automapper,然后將查詢結果匹配過來
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/103580.html
標籤:.NET Core
