gpt4 book ai didi

c# - 我可以在 linq 中实现属性并且不调用方法两次吗?

转载 作者:行者123 更新时间:2023-11-30 14:22:41 26 4
gpt4 key购买 nike

我在 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());

有什么方法可以不为 Name 属性调用 StringParser.getBeforeString 方法两次?

最佳答案

您可以在选择中显式打开范围并将结果存储在变量中:

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());

或者如果你想要查询语法使用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();

关于c# - 我可以在 linq 中实现属性并且不调用方法两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com