linq to sql 学习(10)linq动态字段的解决方法
来源:互联网 发布:淘宝店铺宝贝素材图片 编辑:程序博客网 时间:2024/06/15 02:51
我们需要对这个表格进行数据分析,分析每个学生各学科的成绩情况,最终如下表格:
这个问题,貌似不能像我们平时写SQL语句那样方便,想了很久,最后采用了一个比较实在的方法,用DataTable将我得到的数据进行填充。
接下来我们开始做这个例子,做开始这里例子之前,我们需要有如下3张表格数据:
1.学生表studentdata. 2.学科表subjectdata.3.学生成绩表StudentsScore
关系图如下:
现在我们开始写后台代码:
StudentDataContext db = new StudentDataContext();
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
//输出课程表的所有数据,并将这些数据附加到dt的列作为字段
var sub = db.SubjectData;
foreach (var sd in sub)
{
dt.Columns.Add(sd.subject);
}
//输出学生表的所有数据,并将这些数据附加到dt的行
var data = db.StudentData;
foreach (var user in data)
{
DataRow dr = dt.NewRow();
dr["姓名"] = user.Student;
dt.Rows.Add(dr);
}
//我们这里是要分析每个学生各科的成绩(一个学生有多门学科的成绩)
for (int i = 0; i < dt.Rows.Count; i++)
{
foreach (var sd in sub)
{
string str = dt.Rows[i]["姓名"].ToString();
var query = from p in db.StudentsScore
where p.Student.Equals(str) && p.Subject.Equals(sd.subject)
select new
{
p.Student,
p.Score
};
foreach (var sc in query)
{
DataRow dr = dt.NewRow();
dt.Rows[i][sd.subject] = sc.Score.ToString();
break;
}
}
}
gd.DataSource = dt;
gd.DataBind();
到这里我们的动态字段分析,就完成了。
附录:几种LINQ to SQL 数据访问形式:
//第一种数据访问形式
IDbConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=p@ssw0rd");
DataContext ctx = new DataContext(conn);
Table<InStore> tbInStore = ctx.GetTable<InStore>();
gd.DataSource = tbInStore;
gd.DataBind();
//第二种数据访问形式
InStoreDataContext db = new InStoreDataContext();
Table<InStore> tbInStore = db.GetTable<InStore>();
gd.DataSource = tbInStore;
gd.DataBind();
//第三种数据访问形式 InStoreDataContext db = new InStoreDataContext(); var predicate = PredicateBuilder.True<InStore>(); List<InStore> tbInStore = db.InStore.Where(predicate).ToList(); var query = from InStore store in tbInStore select new { store.Id, store.ProName }; gd.DataSource = query; gd.DataBind();
- linq to sql 学习(10)linq动态字段的解决方法
- linq to sql 学习(6)linq的分页实例
- linq to sql 的学习
- linq to sql 学习(11)linq 构造更完美的动态数据查询(可扩展)
- LINQ to SQL 学习
- Linq to SQL学习
- LINQ to SQL 学习
- (LINQ 学习系列)(2)LINQ to SQL 查询
- linq,linq to sql
- 什么是Linq to sql 学习linq 1
- 小白的LINQ TO SQL学习
- (LINQ 学习系列)(1)使用 LINQ to SQL 的典型步骤
- LINQ To SQL深入学习系列之一(C#3.0为LINQ的加强之一)
- linq to sql 学习(7)linq的分组汇总操作
- linq to sql 学习(8)linq的多表查询实例
- linq to sql 学习(9)linq的多表关联汇总
- linq to sql 学习(2) 简介
- linq to sql 学习(5)关于排序的介绍
- Socket通信
- 入门的菜鸟_开始工作啦
- Linux目录结构
- DICOM医学图像文件格式
- SetThreadAffinityMask详解
- linq to sql 学习(10)linq动态字段的解决方法
- Java substring和substr用法
- 线程
- vc删除应用程序快捷方式
- asterisk 模拟卡常见问题以及解决办法(第一部分、第二部分)(转)
- vc添加应用程序快捷方式
- c++中的断言
- 半透明AlphaBlend
- linq to sql 学习(11)linq 构造更完美的动态数据查询(可扩展)