我在C#中有这种代码,如果有更好的计算Name属性的解决方案,我很有意思:
dictItem.valueElement.Select(li => new ItemWithNameAndUrl {
Name = StringParser.getBeforeString("(", li.InnerText) == string.Empty ?
li.InnerText : StringParser.getBeforeString("(", li.InnerText), //don't like it
Url = li.Element("a").Attributes["href"].Value
}).ToList());
Run Code Online (Sandbox Code Playgroud)
有没有办法不StringParser.getBeforeString为Name属性调用方法两次?
您可以在变量中显式打开选择和存储结果中的范围:
var result = dictItem.valueElement.Select(li => {
var name = StringParser.getBeforeString("(", li.InnerText);
return new ItemWithNameAndUrl {
Name = name == string.Empty?li.InnerText : name,
Url = li.Element("a").Attributes["href"].Value
}
}).ToList());
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要查询语法,请使用let关键字:
var result = (from li in dictItem.valueElement
let name = StringParser.getBeforeString("(", li.InnerText)
select new ItemWithNameAndUrl {
Name = name == string.Empty ? li.InnerText : name,
Url = li.Element("a").Attributes["href"].Value
}).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |