任何人都可以告诉我:
Select
查询中有多少种类型的LINQ
条款以及它对Select
的性能有何影响?
我找到的例子:
1。使用New Class从表中获取对象
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;
答案 0 :(得分:3)
嗯,在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});
我几乎可以肯定查询和方法语法之间没有差异。
现在,匿名和强类之间的差异通常不是必须解决的问题,而是需求问题...
答案 1 :(得分:2)
嗨,你可以在http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b找到有用的例子。
答案 2 :(得分:1)
浏览the documentation,唯一可以为您提供记录的select
就是select a
已经拥有它们的地方。
BTW VB.NET有Select Name=d.Name, BreedName=b.BreedName
,但这只是一个更匿名的类型。