LINQ to DataSet
投影
SqlDataAdapter sda = new SqlDataAdapter("select * from student", new SqlConnection("server=(local);database=myschool;Integrated Security=true"));
DataSet ds = new DataSet();
sda.Fill(ds);
DataTable dt = ds.Tables[0];
基于方法的
var Student = dt.AsEnumerable().Select(student => new { studentname = student.Field("studentname") });
Console.WriteLine(Student.GetType().ToString());
foreach (var studentname in Student)
{
Console.WriteLine(studentname.studentname);
}
基于表达式的
var Student2 = from student in dt.AsEnumerable() select student.Field("studentname");
foreach (var studentname in Student2)
{
Console.WriteLine(studentname);
}
这里的student都由编译器决定,应为dt都被转换为一个IEnumberable的类型(这里就为IEnumberable,student就为一个DataRow)
筛选
var Student = dt.AsEnumerable().Select(student => new { studentname = student.Field<string>("studentname"), studentSex = student.Field<string>("sex") }).Where (Studentnew=>Studentnew .studentSex =="男");
//在where前的结果相当于一个有sex和name成员的类的实例,也就定义了Studentnew
foreach (var studentname in Student)
{
Console.WriteLine(studentname.studentname);
}
Console.WriteLine(Student.GetType().ToString()+"shuliang:"+Student .Count ());
var Student2 = from student in dt.AsEnumerable() where student.Field<string>("sex") == "男" select new { studentname = student.Field<string>("studentname"), studentSex = student.Field<string>("sex") };
foreach (var student in Student2)
{
Console.WriteLine(student.studentname +student .studentSex );
}