【问题标题】:LINQ to Array in Silverlight 2Silverlight 2 中的 LINQ to Array
【发布时间】:2023-03-09 01:16:01
【问题描述】:

我的代码有问题,或者我没有完全理解这一点。我有以下代码运行一个查询,该查询可能包含多个 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();

它返回 { 参与者 = #(ValueOfAttribute) }

我只想返回实际值,而不是花括号或“particpant =”,这是怎么回事?

【问题讨论】:

    标签: c# .net xml linq silverlight-2.0


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多