LINQ to Array in Silverlight 2
本文关键字:Silverlight in Array to LINQ | 更新日期: 2023-09-27 17:47:49
我的代码有问题,或者我只是没有完全理解。我有以下代码运行一个查询,该查询可能包含多个RIGHT属性,并希望将每个属性存储在一个数组中以供以后获取:
var members = from myList in o_data.Descendants(bp + "Reaction")
select new
{
participant = myList.Element(bp + "RIGHT").Attribute(rdf + "resource").Value,
};
return members.ToArray(); // I this the right conversion (to store all attributed values to array)?
由于它们在Silverlight中没有集合,我尝试只返回一个数组。。。当我调用这样的函数时:
FunctionName.GetValue(0).ToString();
它返回{participant=#(ValueOfAttribute)}
我只想返回实际值,而不是curley大括号或"partipant="这里发生了什么?
大括号之所以存在,是因为您在linq查询中创建的匿名类型的ToString实现将它们放在了那里。
以下是匿名类型的ToString实现:
public override string ToString()
{
StringBuilder builder = new StringBuilder();
builder.Append("{ test = ");
builder.Append(this.<test>i__Field);
builder.Append(" }");
return builder.ToString();
}
如果你只想返回"参与者"的值,删除所有匿名类型的东西,只需选择该值:
var members = from myList in o_data.Descendants(bp + "Reaction")
select myList.Element(bp + "RIGHT").Attribute(rdf + "resource").Value;
return members.ToArray();
最后,如果您想为每个元素选择多个值(示例代码中有一个悬空逗号,暗示了这一点),请定义一个命名类型,并在查询中创建该类型的实例。然后,您可以在查询方法之外引用该类型的属性,因为数组将是该类型实例的数组,而不是对象的数组。