c# – Linq Combine Fields

只是想查看是否有更优雅的方法来使用 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!
}

是的,我知道执行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 }

就预测的预测而言,效率会稍微低一些,但它会起作用.

效率稍高的是:

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 }

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...