对lambda表达式中当前对象的引用
本文关键字:对象 引用 lambda 表达式 | 更新日期: 2023-09-27 18:21:16
是否可以在Linq中的lambda表达式的Select语句中引用当前对象的属性?
示例:
...
.Select(s => new {
Date = s.Date.ToString("yyyy-MM-dd"),
Time = s.Time.ToString("h':'m"),
DateTime = s.Date.ToString("yyyy/MM/dd") +"-"+ s.Time.ToString("h':'m"),
Temperature = s.Temperature,
Humidity = s.Humidity,
Device = s.Device.Name,
Message = s.Message
})
我想通过引用先前定义的Date
和Time
属性来替换对ToString
函数的双重调用。
如果切换到LINQ查询语法(而不是方法语法),则可以使用let
关键字"存储子表达式的结果,以便在后续子句中使用它"。
from s in source
let dateStr = s.Date.ToString("yyyy-MM-dd")
let timeStr = s.Time.ToString("h':'m")
select new {
Date = dateStr,
Time = timeStr,
DateTime = dateStr + "-" + timeStr,
Temperature = s.Temperature,
Humidity = s.Humidity,
Device = s.Device.Name,
Message = s.Message
}
您可以使用lambda函数,而不是lambda表达式:
.Select(s => {
var d = s.Date;
var t = s.Time;
return new {
Date = d.ToString("yyyy-MM-dd"),
Time = t.ToString("h':'m"),
DateTime = d.ToString("yyyy/MM/dd") +"-"+ t.ToString("h':'m"),
// ...
})
注意{
的额外集合。。。}
大括号(允许您拥有lambda的本地变量)和return
。