[英]Select Clause In LINQ Query
谁能告诉我: LINQ
查询中有多少种Select
子句可用,并且随着Select
变化,它对性能有何影响?
我发现的例子:
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
。
BTW VB.NET具有Select Name=d.Name, BreedName=b.BreedName
,但这只是一个更加匿名的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.