[英]How to find one value from an IQueryable in C# ASP.NET MVC 4 using Linq?
[英]how to select records from multiple table with max count value from one table using Linq in Asp.net MVC C#
我有3个表:1。Tbl_Model,2。Tbl_ModelImg,3。Tbl_Category
我想知道如何使用categoryId从这3个表中获取记录。
单个模型可能有多个图像,但我想用它们的图像显示该类别的所有产品。 问题是我只想在该视图中使用单个图像。 因此,当用户点击该特定模型时,该模型及其所有图像的详细信息将显示在下一个视图中。
以下查询工作正常,但它显示所有具有模型名称的图像。 均值如果模型有4个图像而不是类别详细信息页面,则显示4个具有相同名称和不同图像的项目。
这是模型类:
public class showdata { public Tbl_ModelImg tmi { get; set; } public Tbl_Model tm { get; set; } public Tbl_SubCategory tblsubcategory { get; set; } }
public ActionResult Categorydetails(string sid) { var sId = Int64.Parse(new StandardModule().Decrypt(HttpUtility.UrlDecode(sid.ToString()))); try { var query = (from c in db.Tbl_Model join o in db.Tbl_ModelImg 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(); return View(query); }
用。替换LINQ查询的第二行
join o in db.Tbl_ModelImg.GroupBy(m => m.Model_Id).Select(m => m.First())
GroupBy()
将按Tbl_ModelImg
对Model_Id
的项目进行Model_Id
,然后Select()
将结果数据集的内容减少到每个组中的第一个项目。
一旦where
子句将结果限制为那些加入到正确的SubCategory_Id
项目,那么您就拥有了所需的内容。
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.