我有这个来自 web 表单项目的选择语句,我想转换它以便我可以在我的 mvc 项目中使用以显示在 Razor 页面的下拉列表中
<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 });
关于c# - 将 sql 语句转换为 lambda 以在 razor 页面中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930118/