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