如何使用实体框架选择单个列

本文关键字:选择 单个列 框架 实体 何使用 | 更新日期: 2023-09-27 18:21:40

有没有一种方法可以使用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()来执行请求。类似这样的东西,以获得每个年龄在30岁的人的名字:

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

我完全不了解实体,但理论上我就是这样做的。。。

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....

但是"哦,天哪,里克,我知道什么…"

使用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;

对于多个项目,您可以简单地连锁选择位置:

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

如果需要多个属性,请在Select中使用匿名对象。