在Asp Core razor页面中使用LINQ从两个表中选择数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Asp Core razor页面中使用LINQ从两个表中选择数据相关的知识,希望对你有一定的参考价值。
我有两张桌子:
public class Department
public int Id get; set;
public string Name get; set;
和:
public class UsersAccessDepartments
public int Id get; set;
public string UserId get; set;
public int DepartmentId get; set;
数据如下:部门
1 Management
2 Finiance
5 Reciption
用户访问回购包括:
1 9c424b6e-fd57-4be7-b47a-2db67b29f651 1
2 9c424b6e-fd57-4be7-b47a-2db67b29f651 2
3 9c424b6e-fd57-4be7-b47a-2db67b29f651 3007
4 9c424b6e-fd57-4be7-b47a-2db67b29f651 3008
5 c4beb529-bb86-439e-a375-4f4cce3f9054 1
6 c4beb529-bb86-439e-a375-4f4cce3f9054 2
7 247779db-ad5f-4128-ae40-7f44cc3c0c71 3007
我喜欢选择具有新文件显示的部门,或者询问的用户是否在部门中:这是SQL及其工作:
Select D.Id, D.Name,
IIF((select UA.Id from UsersAccessDepartments UA where UA.DepartmentId=D.Id and
UA.UserId='247779db-ad5f-4128-ae40-7f44cc3c0c71') is null ,
'false','true') Selected
from Department D
结果如下:
Id Name Selected
1 Management false
2 Finiance false
5 Reciption false
2005 CFO false
3007 IT true
3008 Cashier true
在asp.core剃刀页面中,我只能使用:
db.Department.FromSql(sql)
从一个表接受文件。或者我必须使用:
db.Database.ExecuteSqlCommand(sql);
这不是返回数据。最后一个选项可用于ADO.Net
command.CommandText = "Your Sql Query";
context.Database.OpenConnection();
using (var result = command.ExecuteReader())
// do something with result
我不想用这个。我的问题:
我可以使用EF核心在sql上面运行吗?
如何创建相当于我上面的选择查询的Linq语句?
答案
我发现这个linq为我做的工作:
(from c in _db.Department
select new SelectListItem
Value = c.Id.ToString(),
Text = c.Name,
Selected = (from UA in _db.UsersAccessDepartments
where UA.UserId== TheUser.Id && UA.DepartmentId==c.Id
select UA.Id).Count()==0? false: true
).ToList();
以上是关于在Asp Core razor页面中使用LINQ从两个表中选择数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core Razor 页面中绑定复杂列表
从 ASP.NET Core Razor 页面获取 DisplayAttribute.Prompt
ASP.NET Core Razor 页面与完整 MVC Core [关闭]
ASP.NET Core 2.2 Razor 页面中的自定义路由