我有一个答案字典对象,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/