LINQ查询中的Select子句
本文关键字:Select 子句 查询 LINQ | 更新日期: 2023-09-27 18:05:01
有人能告诉我吗?LINQ
查询中Select
子句有多少种类型,Select
变化对性能的影响?
Examples I Found:
1。使用新类从表中获取对象
class DogInformation {
public string Name {get;set;}
public string BreedName {get;set;}
}
var result = (from a in new DataContext().Dogs
select new DogInformation { a.Name, a.BreedName }).ToList();
2。使用匿名类型
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result.ToList();
3。另一个我发现
var result = (from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
}).ToList()
.Select(x=>
new Dog{
Name = x.Name,
BreedName = x.BreedName,
}).ToList();
return result;
在linq中,有两种语法:
- 查询语法 方法语法(扩展方法)
所以你可以做
//query syntax
from item in <yourEnumerable>
select ...
或
//method syntax
<yourEnumerable>.Select(m => xxx
现在在两种语法中,您都可以投影到匿名类型或强类型。
//A1. query syntax and anonymous
select new {Id = item.a, Name = item.b}
//A2. query syntax and strong type
select new Test{Id = item.a, Name = item.b}
//B1. method syntax and anonymous
.Select(m => new {Id = m.a, Name = m.b});
//B2. method syntax and strong type
.Select(m => new {Test{Id = m.a, Name = m.b});
我几乎可以肯定,查询和方法的语法没有什么差别。
现在,匿名和强类型之间的区别通常不是性能的问题,这是需求的问题…
嗨,你可以在http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b找到有用的例子。
浏览文档,唯一可以给您记录的其他select
是您已经拥有它们的地方,如select a
。
顺便说一句VB。. NET有Select Name=d.Name, BreedName=b.BreedName
,但这只是一个更加匿名的类型。