以下两个语句是否完全相同,包括后期绑定等副作用?
Ilist<SomeClass> sessions = SomeFunction()
var tmp = from session in sessions
select new ConnectedUsers()
{
ID = session.SessionId,
Username = session.UserName,
HostName = session.ClientName,
IpAddress = session.ClientIPAddress.ToString()
};
var tmp2 = sessions.Select((session) => new ConnectedUsers()
{
ID = session.SessionId,
Username = session.UserName,
HostName = session.ClientName,
IpAddress = session.ClientIPAddress.ToString()
});
Run Code Online (Sandbox Code Playgroud)
编辑:如果我使用第一种语法或第二种语法,类似的语句将是相同的
编译器将在编译过程中将第一个方法转换为第二个方法.
但是,如果使用普通select子句创建一个非平凡的查询表达式,Select则不会发出调用.
因此,以下每对expresisons将编译相同:
from x in Enumerable.Range(0,1000) where x / 2 == x / 2.0 select x
Enumerable.Range(0,1000).Where(x => x / 2 == x / 2.0) //No Select call
Run Code Online (Sandbox Code Playgroud)
from x in Enumerable.Range(0,1000) select x
Enumerable.Range(0,1000).Select(x => x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |