如何使用Entity Framework选择单个列?

SeT*_*ToY 64 c# entity-framework

有没有办法使用Entity Framework 4获取单个列的全部内容?像这样的SQL Query一样:

SELECT Name FROM MyTable WHERE UserId = 1;
Run Code Online (Sandbox Code Playgroud)

Chr*_*son 122

您可以使用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
Run Code Online (Sandbox Code Playgroud)

如果您希望响应中有多个条目,则可以使用它.ToList()来执行请求.这样的事情,得到30岁的每个人的名字:

string[] Names = yourDbContext
  .MyTable
  .Where(u => u.Age == 30)
  .Select(u => u.Name)
  .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @guitarlass如果你想从查询中得到一个结果,那么你需要做类似的事情:`string s = db.Offices.Where(o => o.OfficeId == emp.OfficeId).Select(o = > o.DepartmentId).FirstOrDefault()` (21认同)

Jaw*_*sim 8

我对Entity完全陌生,但是从理论上讲,这就是我要做的事情...

var name = yourDbContext.MyTable.Find(1).Name;
Run Code Online (Sandbox Code Playgroud)

如果是主键。

- 要么 -

var name = yourDbContext.MyTable.SingleOrDefault(mytable => mytable.UserId == 1).Name;
Run Code Online (Sandbox Code Playgroud)

- 要么 -

对于整个列:

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

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


Cla*_*ton 5

使用 LINQ 您的查询应该如下所示:

public User GetUser(int userID){

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

}
Run Code Online (Sandbox Code Playgroud)

当然,要执行此操作,您的解决方案中需要有一个 ADO.Net 实体模型。