c# - 如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录
问题描述
我有 3 个表:1. Tbl_Model,2. Tbl_ModelImg,3. Tbl_Category
我想知道如何使用 categoryId 从这 3 个表中获取记录。
单个模型可能有多个图像,但我想显示该类别的所有产品及其图像。问题是我只想要该视图中的单个图像。因此,当用户单击该特定模型时,该模型的详细信息及其所有图像将显示在下一个视图中。
以下查询工作正常,但它显示所有图像及其型号名称。意味着如果一个模型有 4 个图像而不是类别详细信息页面,它会显示 4 个具有相同名称和不同图像的项目。
这是模型类:
公开课展示数据 { 公共 Tbl_ModelImg tmi { 获取;放; } 公共 Tbl_Model tm { 获取;放; } 公共 Tbl_SubCategory tblsubcategory { 获取;放; } }
公共 ActionResult 类别详细信息(字符串 sid) { var sId = Int64.Parse(新 StandardModule().Decrypt(HttpUtility.UrlDecode(sid.ToString()))); 尝试 { var query = (来自 db.Tbl_Model 中的 c 在 db.Tbl_ModelImg 中加入 o 在 c.Model_Id 上等于 o.Model_Id 在 c.SubCategory_Id 上的 db.Tbl_SubCategory 中加入 d 等于 d.Id 其中 c.SubCategory_Id == sId 选择新的显示数据() { tm = c, tmi = o, tbl子类别 = d }).OrderByDescending(d => d.tm.Id).ToList(); 返回视图(查询); }
解决方案
将 LINQ 查询的第二行替换为
join o in db.Tbl_ModelImg.GroupBy(m => m.Model_Id).Select(m => m.First())
GroupBy()
将对项目进行分组Tbl_ModelImg
,Model_Id
然后将Select()
结果数据集的内容缩减为每个组中的第一个项目。
一旦该where
子句将您的结果限制为那些正确连接的项目,SubCategory_Id
那么您就拥有了您需要的东西。
推荐阅读
- sql - 如何根据列值查询重复行?
- java - 查找树中节点的深度
- c# - ASP.NET Core 3:如何从一个特定区域的路由(从 url)中删除区域?
- arrays - 2列匹配值的Vlookup
- excel - 创建数据系列线性趋势以填充同一列中的单元格之间
- android - 我如何解决“错误:找不到 net.simonvt.schematic:-compiler:0.6.3。”
- microsoft-graph-api - C# MsGraph-SDK:发送 BatchRequest 以使用 Microsoft Graph SDK 获取管理器链接
- c# - 绑定源的更改未调用 WPF DependencyProperty PropertyChangedCallback
- python - 使用 pip 安装 TextBlob 时遇到问题
- javascript - 用于计算特定日期或时间剩余小时数的 Javascript 函数