只是想查看是否有更优雅的方法来使用Linq完成此任务.为简洁起见,我大大简化了代码.我会在一分钟内介绍我的理由,但它是这样的:
(from t in doc.Descendants(p + "Task")
where t.Element(p + "Name") != null
select new {
FirstName = t.FirstName,
LastName = t.LastName,
FullName = FirstName + " " + LastName // Error!
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道执行FullName = t.FirstName +""+ t.LastName会很简单,但让我们想象一下,FirstName和LastName是大丑的内联计算,而不是简单的变量.所以FullName = [大难看的计算1] + [大难看的计算2].因此,根据DRY的精神,有没有更好的方法可以做到这一点?我的第一个想法是编写一个给我FirstName和LastName的函数.但还有更好的东西吗?
好吧,你可以这样做:
from t in doc.Descendants(p + "Task")
where t.Element(p + "Name") != null
let FirstName = t.FirstName
let LastName = t.LastName
select new { FirstName, LastName, Fullname = FirstName + LastName }
Run Code Online (Sandbox Code Playgroud)
就预测的预测而言,效率会稍微低一些,但它会起作用.
稍微更有效的将是:
from t in doc.Descendants(p + "Task")
where t.Element(p + "Name") != null
select new { t.FirstName, t.LastName } into x
select new { x.FirstName, x.LastName, FullName = x.FirstName + x.LastName }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |