请告诉我(1)中"where"和(2)中"where()"之间的区别.
何时使用"where"和"where()"?
List<Person> pList =
new List<Person>
{
new Person
{EmpNo=1,FirstName="Marc",LastName="Loel",Salary=3434},
new Person
{EmpNo=2, FirstName="Steve",LastName="Kaith",Salary=4545},
new Person
{EmpNo=3,FirstName="Neol",LastName="Henk",Salary=2222},
};
(1) var v = from p in pList where p.EmpNo == 1 select new { p.FirstName };
(2) var query =pList .Where(p => p.EmpNo == 1)
.Select(p => new { p.FirstName});
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 25
不同之处在于,一种形式更易于阅读,另一种形式更难以阅读.麻烦的是,大约一半的人认为第一个更容易,一半的人认为第二个更容易!选择你最喜欢的那个并坚持下去; 他们的意思完全相同.
这只是语法糖.实际上,如果你只有一个具有正确Where方法的类,即使该类不可枚举,你也可以使用语法魔法:
class MyClass
{
public IQueryable<int> Where(Func<int, bool> predicate)
{
return Enumerable.Range(1, 100).AsQueryable();
}
}
static void Main(string[] args)
{
var q = from p in new MyClass()
where p == 10
select p;
}
Run Code Online (Sandbox Code Playgroud)
这没有做任何事情,但它构建并将调用该方法.