基本概念
要创建一个LINQ查询操作,一般需要以下3个步骤.
1.准备数据源:准备LINQ查询操作所需要的数据源,如被查询的集合、关系数据库、XML等。
2.创建查询:创建查询数据的LINQ查询表达式,如:“from u in users select u”。
3.执行查询:执行上述步骤创建的LINQ查询表达式,并获取相应的结果。
LINQ包括4个组件:LINQ to Object、LINQ to SQL 、LINQ to DataSet和 LINQ to XML。它们分别能够查询和处理集合类型、关系型数据库类型、 DataSet对象类型和XML类型的数据。
---------------------------------------------------------------------------------------------
LINQ查询表达式类似T-SQL查询语句
from a in users select a //a in users 跟foreach差不多,结果为一个集合,a为一个子集,users为集合 不清楚是什么类型,我们就用var result= 来接收 ,一般用foreach来遍历result
from a in users
where ......(是真假)
orderby ......
select a
------------------------------------------------------------------------------------------------------------------------------------
LinQ To Object
使用LINQ能够查询任何可枚举的集合,如数组(Array和ArrayList)、泛型列表 List<T>、泛型字典Dictionary<T>等,以及用户自定义的集合。
int [] ints ={0,1,2,3,4,5,6,7,8,9}; //数据源 var result=from u in ints //创建查询 select u;
foreach (var item in result){ Console.WriteLine(item);} //执行查询
string[] username = { "张三", "李四", "王五", "关云长" }; var result = from u in username where u.Length>2 //条件 select u; foreach (var item in result) { Response.Write(item); //结果为 关云长 }
//联合查询应用
class Program
{
static void Main(string[] args) { List<Student> stu = new List<Student>() { new Student(){ Name="小李", Age=22,Number=2}, new Student(){ Name="小丁", Age=15,Number=1}, new Student(){ Name="小张", Age=18,Number=1}, new Student(){ Name="小韩", Age=19}, new Student(){ Name="小赵", Age=8}, new Student(){ Name="小钱", Age=9}, }; List<Class> classes = new List<Class>() { new Class(){ Number=1, Name="1班"}, new Class(){Number=2, Name="2班"} };
//联合查询 var temp = from a in stu join c in classes on a.Number equals c.Number //equals 相等 //where a.Number==c.Number select new { //匿名类型对象 年龄=a.Age, 姓名 = a.Name, 班级 = c.Name }; foreach (var item in temp) { //Console.WriteLine("{0}是{1},年龄为{2}岁",item.姓名,item.班级,item.年龄); string str = string.Format("{0}是{1},年龄为{2}岁", item.姓名, item.班级, item.年龄); Console.WriteLine(str); } } } class Student { string name; public string Name { get { return name; } set { name = value; } } int age; public int Age { get { return age; } set { age = value; } } int number; public int Number { get { return number; } set { number = value; } } } class Class { int number; public int Number { get { return number; } set { number = value; } } string name; public string Name { get { return name; } set { name = value; } } }