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 to Array in Silverlight 2

大括号之所以存在,是因为您在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();

最后,如果您想为每个元素选择多个值(示例代码中有一个悬空逗号,暗示了这一点),请定义一个命名类型,并在查询中创建该类型的实例。然后,您可以在查询方法之外引用该类型的属性,因为数组将是该类型实例的数组,而不是对象的数组。