gpt4 book ai didi

c# - 如何访问匿名linq对象的已定义属性?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:39 26 4
gpt4 key购买 nike

我有一个答案字典对象,ans和一个LINQ查询,如下所示:

ans = new Dictionary<string,string>();
ans = LoadAnswers();

var milestones = LoadMilestones(session).Select(
m => new
{
milestoneid = GetSafeValue(m.Attribute("id").Value),
duedate = GetSafeValue(m.XPathValue("duedate")),
answer = ans[milestoneid]
}).ToArray()


在我的里程碑对象内部,我有一个属性答案,我想在其中使用里程碑对象(已定义的属性)从ans对象填充数据。但是该代码无法编译,错误地歪曲地说类型x不包含里程碑的定义。

由于GetSafeValue()是一个巨大的方法,因此我不想再次使用它来填充answer属性。

Q1)如何使用Milestoneid属性作为答案?

Q2)另外,我想使用ans.TrygetValue()避免该查询中的null异常。怎么做 ?

谢谢。

最佳答案

=>之后的表达式可以是返回新类型的完整的匿名方法。因此,您可以像这样提升值:

m => {
var id = GetSafeValue(m.Attribute("id").Value);
string answer;
return new {
milestoneid = id,
duedate = GetSafeValue(m.XPathValue("duedate")),
answer = ans.TryGetValue(id, out answer) ? answer : null
}
}

关于c# - 如何访问匿名linq对象的已定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340017/

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