直接上例子:
static void Main(string[] args)
{
//定义匿名类的数组对象
var peo = new[]
{
new {Name = "ppp1",LastName= "a",ID="2011"},
new {Name = "ppp2",LastName= "a",ID="2002"},
new {Name = "ppp3",LastName= "b",ID="1903"},
new {Name = "ppp4",LastName= "c",ID="2004"}
};
IEnumerable<string> customerFirstNames = from custs in peo select custs.Name+custs.LastName;
foreach (string s in customerFirstNames)
{
Console.WriteLine(s);
}
//通过定义匿名类
var t = from custs in peo select new {Name=custs.Name ,LastName = custs.LastName };
foreach (var s in t)
{
Console.WriteLine(s);
}
//判断字符相等,最好不要用==,用Equals最好
var t2 = from custs in peo where string.Equals(custs.ID,"2011") select custs.Name + custs.LastName;
foreach (var s in t2)
{
Console.WriteLine(s);
}
Console.WriteLine("排序");
//排序
var t3 = from custs in peo orderby custs.ID select custs.Name + custs.LastName;
foreach (var s in t3)
{
Console.WriteLine(s);
}
//分组
var t4 = from custs in peo group custs by custs.LastName;
foreach (var s in t4)
{
Console.WriteLine(s.Key);
foreach (var ss in s)
{
Console.WriteLine(ss.Name +" "+ss.LastName);
}
}
}
联合查询
static void Main(string[] args)
{
//定义匿名类的数组对象
var peo = new[]
{
new {Name = "ppp1",LastName= "a",ID="2011"},
new {Name = "ppp2",LastName= "a",ID="2002"},
new {Name = "ppp3",LastName= "b",ID="1903"},
new {Name = "ppp4",LastName= "c",ID="2004"}
};
var student = new[]
{
new{ID = "2011",cl="aaa"},
new{ID = "2002",cl = "bbb"}
};
//联合查询
var customerFirstNames = from custs in peo
join adr in student
on custs.ID equals adr.ID
select new { custs.Name, custs.LastName, adr.ID, adr.cl };
foreach (var s in customerFirstNames)
{
Console.WriteLine(s);
}
}
如果被查询的对象的内容有所更改,那么,LINQ查询结果也会随着变,但是不是立即改变,而是在LINQ执行扩展方法或者查询运算符时进行更改。
如果不想更改,可像下面那样加上.ToList<>()。<>里面 加上数据的类型
from custs in peo.ToList<>() select custs.Name+custs.LastName;