c# - 在 linq 中添加带有计数功能的额外列以进行查询?
问题描述
我正在开发一个 Asp.net Core 项目并使用 CodeFirst 并使用这样的 sql 语法进行查询
SELECT PartID, PartName, PartLevel,
(SELECT COUNT(ID) AS Expr1
FROM dbo.systemparts
WHERE(MSys.PartID = PartLevel)) AS ChildCount
FROM dbo.systemparts AS MSys
样本输出
我的模特
public class SystemPart
{
[Key]
public int PartID { get; set; }
public string PartName { get; set; }
public int PartLevel { get; set; }
}
控制器
public class HomeController : Controller
{
private readonly ApplicationDbContext _context;
public HomeController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Index()
{
return View();
}
}
现在,我想在 linq 中将其更改为在索引操作中查询字符串或 lambda 表达式。但我无法处理ChildCount
领域。我该怎么做?
解决方案
您可以尝试下面的 LINQ 查询,它将返回antonymous
类型的集合。
context.systemparts.Select(p=> new {
PartId = p.Partid,
PartName = p.PartName,
PartLevel = p.PartLevel,
ChildCount = context.systemparts.Where(q=>q.PartLevel = p.Partid).Count()
});
如果您的视图模型包含 ChildCount 的属性,那么您可以在 Select 中映射该模型,如下所示 -
context.systemparts.Select(p=> new ViewModelName {
PartId = p.Partid,
PartName = p.PartName,
PartLevel = p.PartLevel,
ChildCount = context.systemparts.Where(q=>q.PartLevel = p.Partid).Count()
});
推荐阅读
- sql-server - 配置 SSIS 包错误“找不到参数 'myParm',因为它不存在。”
- java - 我可以编写一个应用程序来拍照而不保存并通过 USB 将它们发送到我的电脑吗?
- cassandra - Cassandra 节点上的高磁盘 I/O(读取)
- python - 安装包
- reactjs - React:如何解决错误:对象的类型为“未知”?
- c# - 什么是适合我的案例的基于 MVC 的 OOP 设计?
- python - 命令引发异常:AttributeError:“用户”对象没有属性“角色”
- python - Aiohttp 在浏览器正常打开的某些网站上引发证书错误
- python - 如何使下一个“for”循环从前一个循环继续循环到字典?
- html - 显示移动视图的桌面视图