C#基础之LINQ查询语句的简单使用(一)
2013-11-07 14:52
816 查看
l 对数组查询(排序,查找)
l 对集合查询(排序,分组)
l 多种条件综合使用的简单实例
在不触及数据库的前提下,从一些数据中查询出需要的数据,最简单方便的莫过于LINQ语句,而它的使用,相信只要学习过简单SQL语句的人,都会觉得非常简单,下面笔者列举了最常见的几个LINQ语句查询,而更多的内容,待以后慢慢积累。
1.对数组查询
①对数组降序/升序排列查询
int[]
nums =new int[] { 2, 54, 4, 6, 7, 882, 4, 6, 53, 3, 1, 5, 6, 7, 8 };
//升序排列,each代表nums中的每个元素,orderby指明检索语句
var result =
from eachin nums
orderby eachselect each;
Console.WriteLine("升序排列:");
foreach (int itemin
result)
{
Console.Write("{0}\t", item);
}
//降序排列
Console.WriteLine("\r\n降序排列:");
var result1 =
from eachin nums
orderby eachdescending
select each;
foreach (int itemin
result1)
{
Console.Write("{0}\t", item);
}
Console.ReadKey();
如上,简简单单的一句LINQ语句,便快速对数据进行了排列查询,当然要注意该语句改变的结果保存在变量result/result1中,而类型var,是一种‘推断’类型,在不确定类型的时候可以用它来代替,表示由编译器确定和分配最适当的类型。而经过查询的nums数组,其本身的元素排列并未发生改变。
②从数组中找出偶数和奇数并分开列出
int[]
nums =new int[] { 2, 54, 4, 6, 7, 882, 4, 6, 53, 3, 1, 5, 6, 7, 8 };
//偶数查询
each代表nums中的每个元素,where子句限定检索条件
var result =
from eachin nums
where each % 2 == 0select each;
//奇数查询
var result1 =
from eachin nums
where each % 2 != 0select each;
Console.WriteLine("偶数:");
foreach (int itemin
result)
{
Console.Write("{0}\t", item);
}
Console.WriteLine("\r\n奇数:");
foreach (int itemin
result1)
{
Console.Write("{0}\t", item);
}
Console.ReadKey();
③将字符串数组中的元素按照其首字母不同进行分组列出
string[] strs = {
"jack","tom","alon","shrek","tim","fu","java","sharp","done","ah","son"};
//re代表strs数组中的元素,group
by指定检索条件
var results =
from rein strs
group re by re[0];
foreach (var itemin
results)
{
Console.WriteLine("首字母以{0}开头的单词有:",item.Key);
foreach (var resin
item)
{
Console.WriteLine(res);
}
}
Console.ReadKey();
如上,在不改变数组的前提下,使用where/group by子句很简单的找出需要的结果,这也进一步证实了LINQ语句与SQL高度的相似性,本质上讲它们所代表的的意思并未改变多少。看到这里如果LINQ语句已经提起了你的兴趣,就赶紧在看完本篇后续内容后打开圣典MSDN学习吧。
2.对集合查询
有数组的地方不能没有集合,如果之前你一直对集合中的查询排序等赶到头疼,那就看看下面的例子吧。
①添加公司员工的姓名和工资,按工资从高到底排列查询
在不将数据写入数据库的情况下,我们可以考虑将其写入工资为键,姓名为值的SortedDictionary或SortedList集合中,这样集合会自主对键进行排列。当然也可以直接写入Dictionary集合中而后用LINQ语句查询结果,如下例。
Dictionary<string,int>
dic = new Dictionary<string,
int>();
dic.Add("王强",
3500);
dic.Add("刘菲",
4000);
dic.Add("吴桐",
4500);
dic.Add("李茂荣",
2000);
dic.Add("白翠华",
1000);
dic.Add("刘忻",
6000);
//按工资升序
Console.WriteLine("按工资升序排列:");
var result =
from dsin dic
orderby ds.Valueselect ds;
foreach (KeyValuePair<string,int>
kvp in result)
{
Console.WriteLine("姓名{0} 工资{1}",
kvp.Key, kvp.Value);
}
//按工资降序
Console.WriteLine("\r\n按工资降序排列:");
var result1 =
from dsin dic
orderby ds.Valuedescending
select ds;
foreach (KeyValuePair<string,int>
kvp in result1)
{
Console.WriteLine("姓名{0} 工资{1}",
kvp.Key, kvp.Value);
}
Console.ReadKey();
如上,我们通过简单的LINQ语句,很快速的对写入的排列混乱的字典集合做出排列查询,下面例子将展示LINQ语句中的group
by子句在字典集合中的应用。
②以4000元的工资为界,对员工分组
Dictionary<string,int>dic=newDictionary<string,int>
();
dic.Add(
"王强",3500);
dic.Add("刘菲",4000);
dic.Add(
"吴桐",4500);
dic.Add("李茂荣",2000);
dic.Add("白翠华",1000);
dic.Add("刘忻",6000);
//result中存储的查询结果集,一部分为工资大于等于4000,一部分为工资小于4000
var result =
from dsin dic
group ds by ds.Value >= 4000;
foreach (var itemin
result)
{
Console.WriteLine(item.Key==true?"工资大于或等于4000的员工":"工资小于4000的员工");
foreach (var salaryin
item)
{
Console.WriteLine("姓名:{0}\t工资:{1}",salary.Key,salary.Value);
}
}
Console.ReadKey();
3.多种条件综合使用的简单实例
该例引用自MSDN,其中对LINQ语句的使用思维非常值得如笔者这样的初学者学习,我想如果哪天您能轻松自如地写出这样的LINQ语句,那您对LINQ的学习也算是初窥门径。
要求:找出下面几句中单词
string[] strings =
{
"A penny saved is a penny earned.",
"The early bird catches the worm.",
"The pen is mightier than the sword."
};
//分割句子放入array数组中,检索其中首字母是元音字母的单词,不区分大小写,不重复列出
// Split the sentence into an array of words
// and select those whose first letter is a vowel.
var earlyBirdQuery =
(from sentence
in strings
let words = sentence.Split(' ')
from word
in words
let w = word.ToLower()
//此处替换为let w = word时检索将区分大小写
where w[0] ==
'a' || w[0] == 'e'
|| w[0] ==
'i' || w[0] == 'o'
|| w[0] ==
'u'
select word).Distinct();
foreach (var vin earlyBirdQuery)
{
Console.WriteLine("\"{0}\"单词是以元音字母开头",
v);
}
Console.ReadKey();
如上,就是一些LINQ语句的简单使用,如果你觉得真得很方便的话,赶紧去学习吧!
如果您对SQL基础语句也感兴趣的话,可以参看本人的另一篇博客。
地址:SQL基础知识
l 对集合查询(排序,分组)
l 多种条件综合使用的简单实例
在不触及数据库的前提下,从一些数据中查询出需要的数据,最简单方便的莫过于LINQ语句,而它的使用,相信只要学习过简单SQL语句的人,都会觉得非常简单,下面笔者列举了最常见的几个LINQ语句查询,而更多的内容,待以后慢慢积累。
1.对数组查询
①对数组降序/升序排列查询
int[]
nums =new int[] { 2, 54, 4, 6, 7, 882, 4, 6, 53, 3, 1, 5, 6, 7, 8 };
//升序排列,each代表nums中的每个元素,orderby指明检索语句
var result =
from eachin nums
orderby eachselect each;
Console.WriteLine("升序排列:");
foreach (int itemin
result)
{
Console.Write("{0}\t", item);
}
//降序排列
Console.WriteLine("\r\n降序排列:");
var result1 =
from eachin nums
orderby eachdescending
select each;
foreach (int itemin
result1)
{
Console.Write("{0}\t", item);
}
Console.ReadKey();
如上,简简单单的一句LINQ语句,便快速对数据进行了排列查询,当然要注意该语句改变的结果保存在变量result/result1中,而类型var,是一种‘推断’类型,在不确定类型的时候可以用它来代替,表示由编译器确定和分配最适当的类型。而经过查询的nums数组,其本身的元素排列并未发生改变。
②从数组中找出偶数和奇数并分开列出
int[]
nums =new int[] { 2, 54, 4, 6, 7, 882, 4, 6, 53, 3, 1, 5, 6, 7, 8 };
//偶数查询
each代表nums中的每个元素,where子句限定检索条件
var result =
from eachin nums
where each % 2 == 0select each;
//奇数查询
var result1 =
from eachin nums
where each % 2 != 0select each;
Console.WriteLine("偶数:");
foreach (int itemin
result)
{
Console.Write("{0}\t", item);
}
Console.WriteLine("\r\n奇数:");
foreach (int itemin
result1)
{
Console.Write("{0}\t", item);
}
Console.ReadKey();
③将字符串数组中的元素按照其首字母不同进行分组列出
string[] strs = {
"jack","tom","alon","shrek","tim","fu","java","sharp","done","ah","son"};
//re代表strs数组中的元素,group
by指定检索条件
var results =
from rein strs
group re by re[0];
foreach (var itemin
results)
{
Console.WriteLine("首字母以{0}开头的单词有:",item.Key);
foreach (var resin
item)
{
Console.WriteLine(res);
}
}
Console.ReadKey();
如上,在不改变数组的前提下,使用where/group by子句很简单的找出需要的结果,这也进一步证实了LINQ语句与SQL高度的相似性,本质上讲它们所代表的的意思并未改变多少。看到这里如果LINQ语句已经提起了你的兴趣,就赶紧在看完本篇后续内容后打开圣典MSDN学习吧。
2.对集合查询
有数组的地方不能没有集合,如果之前你一直对集合中的查询排序等赶到头疼,那就看看下面的例子吧。
①添加公司员工的姓名和工资,按工资从高到底排列查询
在不将数据写入数据库的情况下,我们可以考虑将其写入工资为键,姓名为值的SortedDictionary或SortedList集合中,这样集合会自主对键进行排列。当然也可以直接写入Dictionary集合中而后用LINQ语句查询结果,如下例。
Dictionary<string,int>
dic = new Dictionary<string,
int>();
dic.Add("王强",
3500);
dic.Add("刘菲",
4000);
dic.Add("吴桐",
4500);
dic.Add("李茂荣",
2000);
dic.Add("白翠华",
1000);
dic.Add("刘忻",
6000);
//按工资升序
Console.WriteLine("按工资升序排列:");
var result =
from dsin dic
orderby ds.Valueselect ds;
foreach (KeyValuePair<string,int>
kvp in result)
{
Console.WriteLine("姓名{0} 工资{1}",
kvp.Key, kvp.Value);
}
//按工资降序
Console.WriteLine("\r\n按工资降序排列:");
var result1 =
from dsin dic
orderby ds.Valuedescending
select ds;
foreach (KeyValuePair<string,int>
kvp in result1)
{
Console.WriteLine("姓名{0} 工资{1}",
kvp.Key, kvp.Value);
}
Console.ReadKey();
如上,我们通过简单的LINQ语句,很快速的对写入的排列混乱的字典集合做出排列查询,下面例子将展示LINQ语句中的group
by子句在字典集合中的应用。
②以4000元的工资为界,对员工分组
Dictionary<string,int>dic=newDictionary<string,int>
();
dic.Add(
"王强",3500);
dic.Add("刘菲",4000);
dic.Add(
"吴桐",4500);
dic.Add("李茂荣",2000);
dic.Add("白翠华",1000);
dic.Add("刘忻",6000);
//result中存储的查询结果集,一部分为工资大于等于4000,一部分为工资小于4000
var result =
from dsin dic
group ds by ds.Value >= 4000;
foreach (var itemin
result)
{
Console.WriteLine(item.Key==true?"工资大于或等于4000的员工":"工资小于4000的员工");
foreach (var salaryin
item)
{
Console.WriteLine("姓名:{0}\t工资:{1}",salary.Key,salary.Value);
}
}
Console.ReadKey();
3.多种条件综合使用的简单实例
该例引用自MSDN,其中对LINQ语句的使用思维非常值得如笔者这样的初学者学习,我想如果哪天您能轻松自如地写出这样的LINQ语句,那您对LINQ的学习也算是初窥门径。
要求:找出下面几句中单词
string[] strings =
{
"A penny saved is a penny earned.",
"The early bird catches the worm.",
"The pen is mightier than the sword."
};
//分割句子放入array数组中,检索其中首字母是元音字母的单词,不区分大小写,不重复列出
// Split the sentence into an array of words
// and select those whose first letter is a vowel.
var earlyBirdQuery =
(from sentence
in strings
let words = sentence.Split(' ')
from word
in words
let w = word.ToLower()
//此处替换为let w = word时检索将区分大小写
where w[0] ==
'a' || w[0] == 'e'
|| w[0] ==
'i' || w[0] == 'o'
|| w[0] ==
'u'
select word).Distinct();
foreach (var vin earlyBirdQuery)
{
Console.WriteLine("\"{0}\"单词是以元音字母开头",
v);
}
Console.ReadKey();
如上,就是一些LINQ语句的简单使用,如果你觉得真得很方便的话,赶紧去学习吧!
如果您对SQL基础语句也感兴趣的话,可以参看本人的另一篇博客。
地址:SQL基础知识
相关文章推荐
- C#使用linq语句查询数组中以特定字符开头元素的方法
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
- Unity3D C#中使用LINQ查询(与 SQL的区别)
- LINQ学习笔记(三)之LINQ to SQL 查询语句使用方法一
- C#怎样在DataTable中使用linq查询
- C#中return语句使用简单介绍
- C#使用LINQ查询表达式的基本子句总结
- asp.net MVC + linq to Entity简单教程(四)linq to Entity查询中其它方法的使用
- C#中使用SQL语句与存储过程(非查询)
- C#.Net:List<T>集合列表的Linq语句查询示例
- 数据查询基础和C#连接数据库语句
- C#基础:LINQ 查询函数整理
- 【MySQL】如何使用C#+MySQL实现一条MySQL语句进行多表查询
- C#学习笔记(八)—–LINQ查询的基础知识(中)
- 使用Python读取TestTrack记录- Part3 动态生成Linq to xml查询语句筛选条件
- SQL查询语句简要使用精华——之 简单查询
- SQL查询语句简要使用精华——之 简单查询
- Hibernate基础-使用标准SQL语句进行查询
- C# 中Linq的学习(查询表达式基础知识)示例
- C#程序中使用LINQ to XML来查询XML格式数据的实例