C# 将SQL转换为实体框架
如何将其转换为实体框架C# 将SQL转换为实体框架,c#,entity-framework,C#,Entity Framework,如何将其转换为实体框架 Emp ______ EmpID Fname Lname PostID Post ______ PostID Position Select e.Fname, e.Lname, p.Position from Emp e inner join Post p on e.PostID = p.PostID 并绑定到DataGridView 审判: var query = db.Employees.Include("Position") // sour
Emp
______
EmpID
Fname
Lname
PostID
Post
______
PostID
Position
Select e.Fname, e.Lname, p.Position from Emp e inner join Post p
on e.PostID = p.PostID
并绑定到DataGridView
审判:
var query = db.Employees.Include("Position") // source
.Join(db.Positions, // target
c => c.PosID, // FK
cm => cm.PosID, // PK
(c, cm) => new { Employees = c, Positions = cm }) // project result
.Select(x => x.Employees).Where(m => m.Fname.Contains(txtSrchFirstName.Text) && m.City.Contains(txtSrchCity.Text));
.Select(x => new { x.EmpID, x.Lname, x.Fname, x.Position, x.City}); // select result
GridView1.DataSource = query1.ToList();
GridView1.DataBind();
从我的头顶上:
var query1 = from e in Emp
join p in Post
on e.PostID equals p.PostID
select new {e.Fname, e.Lname, p.Position};
jmchinney的查询相当于您的sql查询,但是通常情况下,对于EF,您会尝试使用导航属性访问相关数据,这样您就不必描述每个查询中实体之间的关系 你只需要写
var query = from e in db.Employees
from p in e.Posts
select new { e.EmpID, e.Lname, e.Fname, p.Position, p.City});
铌
我不知道City来自何处,它不在您的原始查询中,但在您的试用中,其次,这需要在模型中正确定义关系(使用导航属性)。员工和职位表之间的关系是什么?如果您在问题中也包括表关系,则更好。创建到
PostID
字段的外键关系,您可以直接从Positions
进行查询,而无需使用join。