将sql语句转换为lambda以用于razor页面
本文关键字:用于 razor 页面 lambda sql 语句 转换 | 更新日期: 2023-09-27 18:25:33
我有这个从web表单项目中选择的语句,我想转换它,这样我就可以在我的mvc项目中使用它来显示在剃刀页面的下拉列表中
<asp:SqlDataSource ID="Sections" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnection %>"
SelectCommand="SELECT e.DisplayName, e.ID , e.GUID
FROM Table1 e
INNER JOIN RootTables re
ON e.ID = re.Table1ID
AND re.ChairID = 1">
</asp:SqlDataSource>
我认为它的开头是:var sCommand = (from e in Table1....);
它非常直接。查询应该是这样的:
var results =
from e in db.Table1
join re in db.RootTables re
on e.ID equals re.Table1ID
where re.ChairID == 1
select new { e.DisplayName, e.ID, e.GUID };
或者用流利的语法:
var results =
db.Table1.Join(db.RootTables,
e => new { e.ID, ChairID = 1 },
re => new { ID = re.Table1ID, re.ChairID },
(e, re) => new { e.DisplayName, e.ID, e.GUID });
如果你已经适当地设置了导航属性,它会变得更容易:
var results =
from e in db.Table1
where e.RootTables.Any(re => re.ChairID == 1)
select new { e.DisplayName, e.ID, e.GUID };
或者用流利的语法:
var results = db.Table1.Where(e => e.RootTables.Any(re => re.ChairID == 1))
.Select(e => new { e.DisplayName, e.ID, e.GUID });