如何使用实体框架选择单个列
本文关键字:选择 单个列 框架 实体 何使用 | 更新日期: 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中使用匿名对象。