如果选择的是.NET Framework 2.0 或.NET Framework 3.0,将会出现如下情况,某些组件引用不了。
刚开始接触LINQ,难免发生这种低级错误。(我就发生了)
2.多字段查询
虽然说SQL与LINQ很相似,但两者还是有区别的。
LINQ不允许在SELECT 中使用多个字段查询,必须使用SELECT子句创建一个新对象保存查询结果,
看下代码:
var results =
from u in user
where u.UserID == “zplutor”
select new {u. UserID ,u.RealName,u.Telephone,u.QQ,u.Email}
select new {…} 这里用的是C#3.0匿名类型。
所谓的“匿名类型”,就是在需要能够临时将一批具有一定关联的数据存放起来的对象时,
使用没有类型名字的new表达式,并用对象初始化器进行初始化。
3. 集合运算符
集合演算法包括Distinct,Union,Intersect,Except。
Distinct 作用是从集合中移除重复值。
Union(交集) 作用是返回两个集合中任一集合内的唯一元素。
Intersect(合集)作用是发挥同时出现在两个集合中的元素。
Except(差集)返回位于一个集合但不在另外一个集合的元素。
这里主要是看下应用,理论上跟SQL编程是差不多。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
LinqTest.Linq();
}
}
class LinqTest
{
public static void Linq()
{
//测试数据
int[] numbers = { 2, 2, 3, 5, 5 };
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
//Distinct的使用
var distinctNumbers = numbers.Distinct();
Console.WriteLine("Distinct Numbers:");
foreach (var f in distinctNumbers)
Console.WriteLine(f);
//Union的使用
var unionNumbers = numbersA.Union(numbersB);
Console.WriteLine("Union numbers:");
foreach (var n in unionNumbers)
Console.WriteLine(n);
//Intersect的使用
var intersectNumbers = numbersA.Intersect(numbersB);
Console.WriteLine("Intersect numbers:");
foreach (var n in intersectNumbers)
Console.WriteLine(n);
//Except的使用
var exceptNumbers = numbersA.Except(numbersB);
Console.WriteLine("Except Numbers:");
foreach (var n in exceptNumbers)
Console.WriteLine(n);
}
}
}
测试结果:
4.LINQ排序
单单返回一个结果集合是不够的,为了方便查找,还需要排序。
这里要用到orderby子句 或 thenby方法语句,默认是升序。
如果要倒序还需要使用descending子句,descending 是可选的。
这用的是查询语句的多级排序:
var results =
from u in User
orderby u.UserID,u.QQ descending
select new{u.UserID,u.QQ}
;
如果用的是方法语法,那就用thenby方法语法:
var results = User.OrderBy(u => u.UserID).ThenBy(u => u.QQ).Select(u => new{u.UserID,u.QQ})
太长了,比较难以看懂。
我觉得方法语法更偏向于c#语句,而查询语句则跟SQL十分相似。
我更偏向于查询语句,更加方便直观,或许是我之前学SQL的关系吧。
不过我偏向喜欢查询语句也是有科学根据的:
VS2008在线帮助推荐,尽可能使用查询语法,仅在需要时使用方法语法。
——《C#入门经典》

浙公网安备 33010602011771号