如何在 Asp.net MVC C# 中使用 Linq select 来自多个 table 的记录以及来自一个 table 的最大计数值
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_Model伊姆格,
3.Tbl_Category
我想知道如何使用 categoryId 从这 3 个表中获取记录。
单个模型可能有多个图像,但我想显示该类别的所有产品及其图像。问题是我只想要该视图中的单个图像。因此,当用户单击该特定模型时,该模型及其所有图像的详细信息将显示在下一个视图中。
以下查询工作正常,但它显示所有图像及其模型名称。意思是如果一个模型有 4 张图像而不是类别详细信息页面上它显示 4 个具有相同名称和不同图像的项目。
这是模型 class :
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
分组,然后 Select()
会将结果数据集的内容削减到仅在 Tbl_ModelImg
中的第一项每组。
一旦 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();
我有 3 个表: 1. Tbl_Model, 2. Tbl_Model伊姆格, 3.Tbl_Category
我想知道如何使用 categoryId 从这 3 个表中获取记录。
单个模型可能有多个图像,但我想显示该类别的所有产品及其图像。问题是我只想要该视图中的单个图像。因此,当用户单击该特定模型时,该模型及其所有图像的详细信息将显示在下一个视图中。
以下查询工作正常,但它显示所有图像及其模型名称。意思是如果一个模型有 4 张图像而不是类别详细信息页面上它显示 4 个具有相同名称和不同图像的项目。
这是模型 class :
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
分组,然后 Select()
会将结果数据集的内容削减到仅在 Tbl_ModelImg
中的第一项每组。
一旦 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();