LINQ

LINQ 是language Integrated Query的简称,是语言集成查询,是集成在.NET编程语言中的一种特性。LINQ通过提供一种跨各种数据源和数据格式来使用数据的一致模型。在LINQ查询中始终会用到对象。

LINQ查询

View Code
namespace LINQ基本查询
{
class Program
{
static void Main(string[] args)
{
string[] nameList = new string[] { "唐晓阳", "裴亚敏", "李希", "余田", "郝莉莉" };
//查询
var name = from n in nameList select n;
foreach (var s in name)
{
Console.WriteLine("姓名:{0}", s);
}
Console.ReadKey();
}
}
}

 

View Code
 1  namespace 筛选_where子句_ 
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 string[] nameList = new string[] { "唐晓阳", "裴亚敏", "李希", "余田", "郝莉莉" };
8 //筛选(where子句)
9 var name = from n in nameList where n == "唐晓阳" select n;
10 foreach (var s in name)
11 {
12 Console.WriteLine("姓名:{0}", s);
13 }
14 Console.ReadKey();
15 }
16 }
17 }

 

View Code
string[] nameList = new string[] { "唐晓阳", "裴亚敏", "李希", "余田", "郝莉莉" };             
//where子句的关系条件形式
//var name = from n in nameList
// where n == "唐晓阳" || n == "裴亚敏"
// select n;
var name = from n in nameList
where n.Length == 2 && n == "余田"
select n;
foreach (var s in name)
{
Console.WriteLine("姓名:{0}", s);
}
Console.ReadKey();

 

 

View Code

View Code
namespace 分组_group子句_ 
{
public class Student
{
public string Id { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
//分组(group子句)
List<Student> students = new List<Student>
{
new Student{Id="Compute003",Name="裴亚敏",Sex="",Age=19},
new Student{Id="Compute004",Name="唐杨飞",Sex="",Age=20},
new Student{Id="Compute005",Name="孔海翔",Sex="",Age=21},
new Student{Id="Compute005",Name="唐萍",Sex="",Age=19},
};
//group子句分组
var student = from s in students group s by s.Sex;
foreach (var sKey in student)
{
Console.WriteLine(sKey.Key);
foreach(Student stu in sKey)
{
Console.WriteLine("姓名:{0},性别:{1},年龄:{2}", stu.Name, stu.Sex, stu.Age);
}
}
Console.ReadKey();
}
}
}

 

View Code
namespace 连接_join子句_ 
{
public class Student
{
public string Id { get; set; }
public string Name { get; set; }
public int ClassId { get; set; }
}
public class MyClass
{
public int ClassId { get; set; }
public string ClassName { get; set; }
public string ClassTeacher { get; set; }
}
class Program
{
static void Main(string[] args)
{
//连接(join子句)
List<Student> students = new List<Student>
{
new Student(){Id="Literature01001",Name="唐海翔",ClassId=1},
new Student(){Id="Literature01002",Name="王硕",ClassId=1},
new Student(){Id="Literature01003",Name="李慧",ClassId=1},
new Student(){Id="Literature01001",Name="裴亚敏",ClassId=2},
new Student(){Id="Literature01002",Name="王冰",ClassId=2},
new Student(){Id="Compute03001",Name="刘志海",ClassId=3},
new Student(){Id="Compute03002",Name="唐萍",ClassId=3},
};
List<MyClass> myclass = new List<MyClass>
{
new MyClass(){ClassId=1,ClassName="文学系一班",ClassTeacher="唐晓阳"},
new MyClass(){ClassId=1,ClassName="文学系二班",ClassTeacher="赵宇萌"},
new MyClass(){ClassId=1,ClassName="计算机科学系一班",ClassTeacher="唐萍亮"},
};
////join子句的内部链接,通过equals连接学生和班级
//var innerJoin = from s in students
// join m in myclass on s.ClassId equals m.ClassId
// select new
{
StuID=s.Id,StuName=s.Name,StuClass=m.ClassName};
//foreach (var stu in innerJoin)
//{
// Console.WriteLine("学生编号:{0},学生姓名:{1},所在班级:{2}",
// stu.StuID, stu.StuName, stu.StuClass);
//}


////join子句的分组连接
//var groupJoin = from m in myclass
// join s in students on m.ClassId equals s.ClassId
// into mGroup
// select new { myclass = m.ClassName, MyGroup = mGroup };
//foreach (var myClassGroup in groupJoin)
//{
// Console.WriteLine("班级{0}", myClassGroup.myclass);
// Console.WriteLine("--------------------------");
// foreach (var item in myClassGroup.MyGroup)
// {
// Console.WriteLine(" {0} {1} {2}", item.Id, item.Name, item.ClassId);
// }
//}

////分组结果集用作查询其他子查询的生成器的查询表达式
//var groupJoin = from m in myclass
// join s in students on m.ClassId equals s.ClassId into classGroup
// select new
// {
// MyClassName = m.ClassName,
// MyClassGroup = from mgroup in classGroup
// where mgroup.ClassId > 1
// select mgroup
// };
//foreach (var grouping in groupJoin)
//{
// Console.WriteLine("分组{0}", grouping.MyClassName);
// Console.WriteLine("---------------------");
// foreach (var item in grouping.MyClassGroup)
// {
// Console.WriteLine(" {0} {1} {2}", item.Id, item.Name, item.ClassId);
// }
//}

//join子句的左外部链接
var leftOuterText = from m in myclass
join s in students on m.ClassId equals s.ClassId into
classGroup
select new
{
ClassName = m.ClassName, MyClassGroup = classGroup.DefaultIfEmpty(new Student { Id="",Name ="",ClassId=m.ClassId }) };
foreach (var classGrouping in leftOuterText)
{
Console.WriteLine("班级{0}", classGrouping.ClassName);
foreach (var item in classGrouping.MyClassGroup)
{
Console.WriteLine(" {0} {1} {2}", item.Id, item.Name, item.ClassId);
}
}
Console.ReadKey();
}
}
}

 

 

View Code
namespace let子句
{
class Program
{
static void Main(string[] args)
{
//LINQ查询表达式---let子句运用
string[] strings = {"10","8","9","19","15","12","100" ,"102","192","18","19","19"};
var linqQuerry=
from numString in strings
let num=Int32.Parse(numString)
where num>10 orderby num descending
select num;
foreach(var v in linqQuerry )
{
Console.Write(""+v.ToString());
}
Console.ReadKey();
}
}
}

 

View Code
namespace LINQ_to_Object
{
class Program
{
static void Main(string[] args)
{
string[] employees = File.ReadAllLines(@"Employee.txt",Encoding.Default );
string[] wagesList = File.ReadAllLines(@"wages.txt", Encoding.Default);
var empvswag=from emp in employees
let employee=emp.Split (' ')
from wag in wagesList
let empid=wag.Split (' ')
where employee [0]==empid[0]
select employee [1]+"的工资是:"+empid[1];
foreach(var item in empvswag )
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}

LINQ to SQL对象模型

LINQ to SQL的全称是基于关系数据的.NET语言集成查询,它是以对象形式管理关系数据,并提供丰富的查询功能。当程序运行时,LINQ to SQL会将对象模型中的语言集成查询转换为SQL语句,然后发送到数据库进行执行。


转载于:https://www.cnblogs.com/yilingjue/archive/2012/03/25/2416589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值