SqlSugar连表查询 举例
时间: 2024-02-10 21:14:47 浏览: 92
假设有两个实体类,分别是`Student`和`Class`,它们之间有一对多的关系,即一个班级有多个学生。`Student`实体类中有一个`ClassId`属性,表示该学生所属的班级。现在要查询出每个班级的学生数量和该班级的名称,可以使用SqlSugar进行连表查询,示例代码如下:
```csharp
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int ClassId { get; set; }
}
public class Class
{
public int Id { get; set; }
public string Name { get; set; }
}
// 连表查询
var queryable = db.Queryable<Student, Class>((s, c) => s.ClassId == c.Id)
.Select((s, c) => new
{
ClassName = c.Name,
StudentCount = SqlFunc.AggregateCount(s.Id)
})
.GroupBy((s, c) => c.Name);
// 执行查询并输出结果
var result = queryable.ToList();
foreach (var item in result)
{
Console.WriteLine($"班级名称:{item.ClassName},学生数量:{item.StudentCount}");
}
```
在这个示例中,首先使用`Queryable.Join`方法将`Student`和`Class`表连接起来,然后使用`Queryable.Select`方法选择需要查询的列,其中使用了`SqlFunc.AggregateCount`来计算每个班级的学生数量,最后使用`Queryable.GroupBy`方法按照班级名称进行分组。最终的查询结果是每个班级的名称和学生数量。
阅读全文