LINQ to Array в Silverlight 2 - PullRequest
       10

LINQ to Array в Silverlight 2

1 голос
/ 04 ноября 2008

Что-то не так с моим кодом, или я просто не понимаю этого полностью. У меня есть следующий код, который выполняет запрос, который МОЖЕТ содержать более одного атрибута 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)}

Я просто хочу вернуть фактическое значение, а не фигурные скобки или "partpant =" Что здесь происходит?

1 Ответ

4 голосов
/ 04 ноября 2008

Здесь есть фигурные скобки, потому что реализация ToString анонимного типа, который вы создаете в запросе linq, помещает их туда.

Вот реализация 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();

Наконец, если вы хотите выбрать несколько значений для каждого элемента (ваш пример кода имеет висячую запятую, которая подразумевает это), определите именованный тип и создайте его экземпляры в запросе. Затем вы можете обратиться к свойствам типа вне метода запроса, потому что массив будет массивом экземпляров этого типа, а не массивом объекта.

...