如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录
Posted
技术标签:
【中文标题】如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录【英文标题】:how to select records from multiple table with max count value from one table using Linq in Asp.net MVC C# 【发布时间】:2019-03-27 12:47:35 【问题描述】:我有 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(); 返回视图(查询);【问题讨论】:
图片多了,你想怎么办?取第一个(无论“第一个”是什么意思),忽略所有,别的? 显然Model
(= tbl_model 中的一项)有零个或多个图像(来自 tbl_imgs)。你写道:“我想展示该类别的所有产品及其图像。问题是我只想要该视图中的单个图像。”产品是否与tbl_model
中的行相同?如果你有一个类别的产品,你想要它的所有图像,还是只需要它的一个图像。和哪一个?最新的?最大的?不管是哪一个?
@Hans 并感谢您的回复先生,我想要的是从 tbl_Model 获取所有记录并从 tbl_ModelImg 获取该模型的单个记录(具有多个图像)
Sir @Harald 感谢您的回复,tbl_Model 包含该产品的记录...而 tbl_ModelImg 包含该产品的图像.. 我只想从 tbl_Model 检索所有记录和单个记录来自 tbl_ModelImg 的模型。
【参考方案1】:
将 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
连接的项目,那么您就拥有了所需的内容。
【讨论】:
【参考方案2】: var query = (from c in db.Tbl_Model
join o in db.Tbl_ModelImg.GroupBy(m => m.Model_Id).Select(m
=> m.FirstOrDefault())
on c.Model_Id equals o.Model_Id
join d in db.Tbl_SubCategory on c.SubCategory_Id equals d.Id
where c.SubCategory_Id == sId
select new showdata()
tm = c,
tmi = o,
tblsubcategory = d
).OrderByDescending(d => d.tm.Id).ToList();
【讨论】:
以上是关于如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在 asp.net mvc C# 中使用 paypal 交易的交易 ID 获取交易详情?
如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager
如何在 C# 和 ASP.NET MVC 中读取/写入 cookie
如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?