Linq to Object
2012-06-20 14:30
218 查看
本文将讲述C#中的Linq技术。
一:linq是什么?
linq可以理解为嵌入C#语法的强类型查询语言。(注意:尽管linq看起来和Sql查询很像,但语法却不相同。)
二:linq的作用?
提供一种统一且对称的方式,让程序员得到数据和操作数据(此处的数据可以是XML,DataSet,物理数据等)
三:linq可应用在哪些场景?
Linq to Object、Linq to XML、Linq to DataSet、Linq to Entities、Parallel Linq(并行处理linq查询返回的数据)
linq的基本语法:var result = from item in container select item;
linq获取数据子集: var result = from item in container where booleanexpression select item;
linq to object例子
static void QueryStrings()
{
string[] games = { "Morrowind", "Uncharted 2", "Fallout 3", "Daxter", "Shock2" };
//构建一个查询表达式(注意:ling表达式在迭代内容之前,他们不会真正的运行计算)
//linq此时还没有运算//linq查询的结果集,应该总是使用隐式类型,在绝大数情况下,真正的返回值实现了泛型 IEnumerable<T>接口的类型
var subset = from g in games where g.Contains(" ") orderby g select g;
//上面代码也可以写成 IEnumerable<string> subset = from g in games where g.Contains(" ") orderby g select g;
//输出结果。在迭代的时候才运算(这叫:延迟执行)
foreach (string s in subset)
{
Console.WriteLine("含有空格的是:{0}", s);
}
Console.ReadLine();
}
//linq在迭代外运算例子:
//在foreach逻辑外运算linq
static void QueryInt()
{
//如果希望在foreach逻辑外表运算Linq表达式,可以调用有Enumerable类型定义的扩展方法。如ToArray<T>()、ToList<T>()等。
int[] numbers = { 2, 10, 30, 15, 1, 22 };
int[] rst = (from i in numbers where i > 10 orderby i select i).ToArray<int>();
foreach (int a in rst)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
//linq查询中的常用函数
//1.count<T>() 获取linq查询表达式返回的项数 输出3
static void FunLinq()
{
int[] numbers = { 2, 10, 30, 15, 1, 22 };
int count = (from i in numbers where i > 10 orderby i select i).Count<int>();
Console.WriteLine(count);
Console.ReadLine();
}
//Reverse<T>对linq结果集中的项进行反转 输出22 1 15 30 10 2
static void FunLingReverse()
{
int[] numbers = { 2, 10, 30, 15, 1, 22 };
var newNumbers = from i in numbers select i;
foreach (var p in numbers.Reverse())
{
Console.Write(p + " ");
}
Console.ReadLine();
}
//.orderby 对linq进行排序,默认是正序
//排序
static void FunLinqOrder()
{
string[] games = { "App", "Boss", "Cat", "Date", "End" };
var newn = from i in games orderby i ascending select i;
foreach (var p in newn)
{
Console.Write(p + ". ");
}
//var newd=from d in games orderby d descending select d;
//foreach (var p in newd)
//{
// Console.Write(p+". ");
//}
Console.ReadLine();
}
//Distinct()移除数据中的重复项目
//排序(正序)
static void FunLinqDistinct()
{
string[] games = { "App", "Date", "App", "Date", "End" };
var newn = from i in games orderby i ascending select i;
foreach (var p in games.Distinct())
{
Console.Write(p + " ");
}
Console.ReadLine();
}
static void FunLinqGather()
{
string[] games = { "3App", "2Boss", "9Cat", "6Date", "1End" };
var maxi = (from i in games orderby i ascending select i).Max();
var mini = (from i in games orderby i ascending select i).Min();
int[] gameNum = { 5, 8, 9, 7, 4, 6, 3 };
var avei = (from i in gameNum orderby i ascending select i).Average();
var sumi = (from i in gameNum orderby i ascending select i).Sum();
Console.WriteLine(sumi);
Console.ReadLine();
}
一:linq是什么?
linq可以理解为嵌入C#语法的强类型查询语言。(注意:尽管linq看起来和Sql查询很像,但语法却不相同。)
二:linq的作用?
提供一种统一且对称的方式,让程序员得到数据和操作数据(此处的数据可以是XML,DataSet,物理数据等)
三:linq可应用在哪些场景?
Linq to Object、Linq to XML、Linq to DataSet、Linq to Entities、Parallel Linq(并行处理linq查询返回的数据)
linq的基本语法:var result = from item in container select item;
linq获取数据子集: var result = from item in container where booleanexpression select item;
linq to object例子
static void QueryStrings()
{
string[] games = { "Morrowind", "Uncharted 2", "Fallout 3", "Daxter", "Shock2" };
//构建一个查询表达式(注意:ling表达式在迭代内容之前,他们不会真正的运行计算)
//linq此时还没有运算//linq查询的结果集,应该总是使用隐式类型,在绝大数情况下,真正的返回值实现了泛型 IEnumerable<T>接口的类型
var subset = from g in games where g.Contains(" ") orderby g select g;
//上面代码也可以写成 IEnumerable<string> subset = from g in games where g.Contains(" ") orderby g select g;
//输出结果。在迭代的时候才运算(这叫:延迟执行)
foreach (string s in subset)
{
Console.WriteLine("含有空格的是:{0}", s);
}
Console.ReadLine();
}
//linq在迭代外运算例子:
//在foreach逻辑外运算linq
static void QueryInt()
{
//如果希望在foreach逻辑外表运算Linq表达式,可以调用有Enumerable类型定义的扩展方法。如ToArray<T>()、ToList<T>()等。
int[] numbers = { 2, 10, 30, 15, 1, 22 };
int[] rst = (from i in numbers where i > 10 orderby i select i).ToArray<int>();
foreach (int a in rst)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
//linq查询中的常用函数
//1.count<T>() 获取linq查询表达式返回的项数 输出3
static void FunLinq()
{
int[] numbers = { 2, 10, 30, 15, 1, 22 };
int count = (from i in numbers where i > 10 orderby i select i).Count<int>();
Console.WriteLine(count);
Console.ReadLine();
}
//Reverse<T>对linq结果集中的项进行反转 输出22 1 15 30 10 2
static void FunLingReverse()
{
int[] numbers = { 2, 10, 30, 15, 1, 22 };
var newNumbers = from i in numbers select i;
foreach (var p in numbers.Reverse())
{
Console.Write(p + " ");
}
Console.ReadLine();
}
//.orderby 对linq进行排序,默认是正序
//排序
static void FunLinqOrder()
{
string[] games = { "App", "Boss", "Cat", "Date", "End" };
var newn = from i in games orderby i ascending select i;
foreach (var p in newn)
{
Console.Write(p + ". ");
}
//var newd=from d in games orderby d descending select d;
//foreach (var p in newd)
//{
// Console.Write(p+". ");
//}
Console.ReadLine();
}
//Distinct()移除数据中的重复项目
//排序(正序)
static void FunLinqDistinct()
{
string[] games = { "App", "Date", "App", "Date", "End" };
var newn = from i in games orderby i ascending select i;
foreach (var p in games.Distinct())
{
Console.Write(p + " ");
}
Console.ReadLine();
}
static void FunLinqGather()
{
string[] games = { "3App", "2Boss", "9Cat", "6Date", "1End" };
var maxi = (from i in games orderby i ascending select i).Max();
var mini = (from i in games orderby i ascending select i).Min();
int[] gameNum = { 5, 8, 9, 7, 4, 6, 3 };
var avei = (from i in gameNum orderby i ascending select i).Average();
var sumi = (from i in gameNum orderby i ascending select i).Sum();
Console.WriteLine(sumi);
Console.ReadLine();
}
相关文章推荐
- LINQ TO OBJECT
- 无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
- LinQ To Object 基本用法
- LINQ to Object
- Linq to Object 深入理解(一):了解Linq之前的基础知识
- 【极客营】LINQ进阶篇—LINQ To Object
- LinqToObject(2)——自由自在
- [C#.Net&Linq]LINQ to Object 学习笔记(资料群组GroupBy、ToLookup、ToDictionary)
- C#——LINQ to object 基本用法(
- LINQ体验(一)LINQ to Object
- Linq to object 技巧、用法集锦
- Linq to Object
- LINQ先上手之LINQ to Object案例
- LINQ系列:Linq to Object元素操作符
- LINQ系列:Linq to Object相等操作符
- C#3.5技术探讨(7) :Linq To Object with Lambda Expressions
- 【转】Linq to EF 与Linq to Object 使用心得
- 借鉴 C# 关于 LINQ 的设计思想用 C++ 11 来实现 LINQ to Object
- LINQ to object
- Linq to object 技巧、用法集锦