今天学习了一下Linq中的Select用法,Select 从字面意思上就不难理解,查询,同sql中的查询一样,只不过sql中Select在前,Linq中select在后,
Select操作可以细分为很多模试,来应对开发过程中不同的需求
简单形式
简单形式顾名思义就是非常简单的,普通的,好理解的写法 例如:获取表中单个的字段
这段代码的意思一目了然,获取实体StudentLX中的StuName条件是StuID为10
1 var names = from StudentLX in dt.studentLX 2 where StudentLX.StuID=10 3 select StudentLX.StuName;
匿名类型
匿名类型关键字:VAR
匿名类型是C#3.0带来的新特性
var 关键字他可以理解为类型占位符,他不是C#中的数据类型,他类似于JS中的弱数据类型,在编写程序的过程中var会自动匹配你 右边等式赋值,值得数据类型
他可以匹配任何类型包括数组等类型等。
//匹配右等式的数据类型为INT var it = 123456; //匹配右等式的数据类型为String var it ="Hello Whord"; //注意如果VAR已经匹配,则不可改变匹配后的数据类型 var it = 123456; it="hello";//这样会报错,因为IT已经匹配为int类型变量
匿名类型必须初始化
var it=(string)null //将变量IT初始化并将数据类型匹配为string类型 var it= null //这句代码类似于上一局代码,但是只给变量指定了为值并未指定数据类型
var IT={City="Hello"}
编译器会创建一个包含 City 属性 的匿名类,我们可以通过Type来获取属性的名字
创建一个包含Name,age 属性的匿名类
var ss = from StudentLX in dt.StudentLX select new{ StuName=StudentLX.StuName, StuAge = StudentLX.Age }
需要注意的是,匿名类型不可定义为类成员变量,方法可以返回匿名类型。
static object ST() { var studentget = new{name ="word",age=21}; return studentget; }
返回容易调用难,
//匿名类型的调用 static void Main(string[] args) { Object student = StudentGet(); Console.WriteLine("Name:{0}\nAge:{1}"), student.GetType().GetProPerty("Name").GetValue(student,null) student.GetType().GetProPerty("Age").GetValue(student,null) }
例子,用匿名类进行绑定
private void Form1_Load(object sender, EventArgs e) { UpdateDate(); } private void UpdateDate() { var student1 = new { Name = "Liu", Age = 14 }; var student2 = new { Name = "Guan", Age = 12 }; var student3 = new { Name = "Zhang", Age = 13 }; var students = new List<object> { student1, student2, student3 }; dataGridView1.DataSource = students; }