最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

使用LinQ实现对数据对象的查询

来源:动视网 责编:小采 时间:2020-11-09 14:14:03
文档

使用LinQ实现对数据对象的查询

使用LinQ实现对数据对象的查询:因为项目需要,接触到了LinQ,经过一段时间的学习,对LinQ有了简单的认识,本文就这个话题做个简单的叙述。 首先,应该写出几个问题,从宏观上了解一下。LinQ是什么?为什么使用LinQ?使用它有什么好处? 语言集成查询(Language Intergrated Q
推荐度:
导读使用LinQ实现对数据对象的查询:因为项目需要,接触到了LinQ,经过一段时间的学习,对LinQ有了简单的认识,本文就这个话题做个简单的叙述。 首先,应该写出几个问题,从宏观上了解一下。LinQ是什么?为什么使用LinQ?使用它有什么好处? 语言集成查询(Language Intergrated Q

因为项目需要,接触到了LinQ,经过一段时间的学习,对LinQ有了简单的认识,本文就这个话题做个简单的叙述。 首先,应该写出几个问题,从宏观上了解一下。LinQ是什么?为什么使用LinQ?使用它有什么好处? 语言集成查询(Language Intergrated Query),是一

因为项目需要,接触到了LinQ,经过一段时间的学习,对LinQ有了简单的认识,本文就这个话题做个简单的叙述。

首先,应该写出几个问题,从宏观上了解一下。LinQ是什么?为什么使用LinQ?使用它有什么好处?

语言集成查询(Language Intergrated Query),是一组用于C#和vb语言的扩展,它允许编写C#或者vb代码以查询数据库相同的方式操作内存数据。----百度百科

通俗点说,它就是查询数据的。那么为什么要用它来查询数据呢,使用它有什么有点吗?

我们从稍微抽象一点的角度来考虑这个问题。面向对象的编程和数据访问的割裂:一 面向对象的语言和数据库有两套完全不相干的数据类型体系,编程语言中的string,在数据库中就是varchar,这完全没有统一性可言;二 SQL编码体验落后,我们编写SQL的语句,没有提示语句,只有写完了,才知道是否正确,客户体验度差;三 各类查询语言不一致,XML和数据库都有各自的数据查询体系,对象没有自己的查询体系。基于以上种种问题,LinQ出现了。

组成 上面也提到了,LinQ包括三类内容的查询,对象,XML文件和数据库。对数据库的查询分为三个部分:

Linq to sql,

linq to DataSet,

linq to Entities。

\

<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgICCy6dGvt73KvaO6TGluUbLp0a/K/b7d09DBvdbWt73KvaOs0+/R1LLp0a+6zbe9t6iy6dGvCqGjsunRr9PvvuTKtdPDwOAmIzIwMjg0O9PaU1FM0+++5LXE0M7KvbLp0a+jrNXi1ta3vcq9v8m2wdDUx78Ko6y1q8rHz97Wxr3PtuCjrLbU09q24Mz1vP6y6dGvutzE0cq1z9aho7Lp0a+3vbeot73KvaO61eLW1re9yr2/ybbB0NSyu8e/o6y1q8rHv8nS1Mq1z9a63LbguLTU07XEsunRr9Kqx/OjrNLyzqrO0sPHv8nS1L2rsunRr8z1vP61pbbA1/bSu7j2t723qMilyrXP1qGjzaizo8fpv/ajrM6qwcu0+sLrtcS/ybbB0NSjrM7Sw8fK18/I06a4w7+8wsfKudPDsunRr9Pv0dS3vcq9o6zI57n7sunRr9Pv0dTE0dLUyrXP1qOs06a4w72rsunRr9Pv0dS6zbLp0a+3vbeoveG6z8bwwLS77LHgyrnTw6Os1eLR+bzI1+6087uvtcTKtc/Wwcu0+sLrv8m2wdDUo6zSstT2x7/By7Lp0a+5psTcoaM8L3A+CjxwPiBsaW5xtcS8uNbWuN+8trLp0a+3vbeoo7o8L3A+CjxwPr7bus+juk1heCxNaW4sQ291bnQsU3VttcijuzwvcD4KPHA+xcXQ8qO6VGhlbkJ5LE9yZGVyQnm1yKO7PC9wPgo8cD631sf4o7pUYWtlLFNraXAsVGFrZVdoaWxlLFNraXBXaGlsZbXIo7s8L3A+CjxwPryvus+jukRpc3RpbmN0PC9wPgo8cD7J+rPJo7pSYW5nZSxSZXBlYXQ8L3A+CjxwIGxhbmc9"en-US">

下面是几个LinQ查询示例:

1 基于语言、方法混编查询的方式(linq to objects):

private void btnQuery_Click(object sender, EventArgs e)
 {
 //LinQ To Object 基本方法部分
 //泛型集合数据 person
 List person = new List();
 person.Add("老 大");
 person.Add("老 二");
 person.Add("老 三");
 person.Add("老 四");
 person.Add("老 五");
 person.Add("小 六");
 person.Add("小 七");
 person.Add("小 八");

 ////
输出person 所有元素 //var result = from p in person select p; //输出person中所有以老开头的人 //语句、方法混编模式,使用语句查询,使用方法筛选 var result = (from p in person select p).Where(p => p.StartsWith("老")); //打印 result.Print(); } public static void Print(this IEnumerable ie) { //获取可遍历的接口 IEnumerator result = ie.GetEnumerator(); while (result.MoveNext()) { Console.WriteLine("\n------------------------\n"); Console.WriteLine(result.Current); Console.WriteLine("\n------------------------\n"); } }

这段代码首先定义了一个泛型集合对象person,然后使用查询语句和查询费昂发混编模式查询出以“老”开头的人,然后打印出来。查询语句不能完成所有的查询功能,需要借助查询方法来筛选,本例中的查询方法为系统提供。可以看出来,查询语句可读性强,但是功能不够强大,查询方法可读性不强,功能比较多。

	2 基于查询方法模式(linq to objects)
	private void btnSelect_Click(object sender, EventArgs e)
	 {
	 //LinQ To Object 基本方法部分
	 //泛型集合数据 person
	 List person = new List();
	 person.Add("老 大");
	 person.Add("老 二");
	 person.Add("老 三");
	 person.Add("老 四");
	 person.Add("老 五");
	 person.Add("小 六");
	 person.Add("小 七");
	 person.Add("小 八");
	 //方法四 调用外部复杂方法作为查询条件
	 var result = person.Where(p => Judge(p));
	}
	public bool Judge(String s)
	 {
	 if (s.StartsWith("老"))
	 {
	 return true;
	 }
	 else
	 {
	 return false;
	 }
	 } 
本段代码功能同上,完全使用查询方法完成了筛选功能,这个方法不同于上例中的方法,此方法是重新定义的方法。
	3 基于数据库的查询(LinQ to Entities)
	public ActionResult Index()
	 {
	//1 使用linq语句获取实体数据
	//查询条件中使用了lambda表达式
	List list = (from b in db.BlogArticle where b.AIsDel ==false select b).ToList ();
	//2 使用viewdata获取数据
	 ViewData["DataList"] = list;
	
	 // 3 加载视图
	 list.Print();
	} 
	 public partial class BlogArticle
	 {
	实体代码:略
	 }
   

本例中,我们只是将数据对象替换成了实体集合,基本语法相同。

优点:书写简单,容易上手。以对象的形式查询数据,配合查询语句和查询方法的使用,是数据查询更加直观。

缺点:linq使用延迟加载功能,将待操作数据放入内存中,占用了大量资源,造成资源浪费。


文档

使用LinQ实现对数据对象的查询

使用LinQ实现对数据对象的查询:因为项目需要,接触到了LinQ,经过一段时间的学习,对LinQ有了简单的认识,本文就这个话题做个简单的叙述。 首先,应该写出几个问题,从宏观上了解一下。LinQ是什么?为什么使用LinQ?使用它有什么好处? 语言集成查询(Language Intergrated Q
推荐度:
标签: 查询 使用 数据
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top