多个表联合查询使用linq语句进行分组求平均值
时间: 2023-12-28 19:03:35 浏览: 75
多表联合查询
可以使用 LINQ 查询语句来对多个表进行联合查询,并对结果进行分组,并求出每组中某一列的平均值。以下是一个示例代码:
```csharp
var table1 = new DataTable();
table1.Columns.Add("ID", typeof(int));
table1.Columns.Add("Name", typeof(string));
table1.Columns.Add("Age", typeof(int));
table1.Rows.Add(1, "Tom", 20);
table1.Rows.Add(2, "Mike", 22);
var table2 = new DataTable();
table2.Columns.Add("ID", typeof(int));
table2.Columns.Add("Course", typeof(string));
table2.Columns.Add("Score", typeof(int));
table2.Rows.Add(1, "Math", 80);
table2.Rows.Add(1, "English", 90);
table2.Rows.Add(2, "Math", 85);
table2.Rows.Add(2, "English", 95);
var query = from t1 in table1.AsEnumerable()
join t2 in table2.AsEnumerable() on t1.Field<int>("ID") equals t2.Field<int>("ID")
group t2 by t1.Field<string>("Name") into g
select new
{
Name = g.Key,
AverageScore = g.Average(row => row.Field<int>("Score"))
};
foreach (var item in query)
{
Console.WriteLine("Name: " + item.Name + ", Average Score: " + item.AverageScore);
}
```
以上代码会输出每个人的姓名以及他们所参加的课程的平均分数。请注意,这里使用了 `join` 关键字将两个表联合查询,并使用 `group by` 关键字将结果按照姓名进行分组,最后使用 `Average()` 方法求出每组中 Score 列的平均值。
阅读全文