簡體   English   中英

如何使用實體框架選擇單列?

[英]How to select a single column with Entity Framework?

有沒有辦法使用實體框架 4 獲取單個列的全部內容? 與此 SQL 查詢相同:

SELECT Name FROM MyTable WHERE UserId = 1;

您可以使用 LINQ 的.Select()來做到這一點。 在你的情況下,它會是這樣的:

string Name = yourDbContext
  .MyTable
  .Where(u => u.UserId == 1)
  .Select(u => u.Name)
  .SingleOrDefault(); // This is what actually executes the request and return a response

如果您希望.ToList()多個條目作為響應,您可以使用.ToList()來執行請求。 像這樣的事情,要得到每個 30 歲的人的名字:

string[] Names = yourDbContext
  .MyTable
  .Where(u => u.Age == 30)
  .Select(u => u.Name)
  .ToList();

我是 Entity 的完全菜鳥,但這就是我理論上的做法......

var name = yourDbContext.MyTable.Find(1).Name;

如果是主鍵。

- 要么 -

var name = yourDbContext.MyTable.SingleOrDefault(mytable => mytable.UserId == 1).Name;

- 要么 -

對於整個列:

var names = yourDbContext.MyTable
.Where(mytable => mytable.UserId == 1)
.Select(column => column.Name); //You can '.ToList();' this....

但是“哦,Geez Rick,我知道什么......”

使用 LINQ,您的查詢應如下所示:

public User GetUser(int userID){

return
(
 from p in "MyTable" //(Your Entity Model)
 where p.UserID == userID
 select p.Name
).SingleOrDefault();

}

當然,要做到這一點,您的解決方案中需要有一個 ADO.Net 實體模型。

您可以使用 LINQ select子句並引用與您的 Name 列相關的屬性。

如果您只獲取單個項目,則需要在FirstOrDefault()/SingleOrDefault()之前使用 select 。 並且您可以使用所需屬性的匿名對象。

var name = dbContext.MyTable.Select(x => new { x.UserId, x.Name }).FirstOrDefault(x => x.UserId == 1)?.Name;

以上查詢將轉換為:

Select Top (1) UserId, Name from MyTable where UserId = 1;

對於多個項目,您可以簡單地將 Select 鏈接到 Where 之后:

var names = dbContext.MyTable.Where(x => x.UserId > 10).Select(x => x.Name);

如果需要多個屬性,請在 Select 中使用匿名對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM