Как мне сделать это в Linq? - PullRequest
2 голосов
/ 14 мая 2009

У меня есть IList<Foo>, и я пытаюсь сериализовать его как Json без включенных в результат имен полей Таким образом, я пытаюсь создать анонимный объект , который я передаю методу сериализации Json.

Foo определяется как (псевдокод): -

public class Foo
{
    public int X;
    public int Y;
}

Когда я возвращаю это как Json ...

return Json(foos);

результат похож на

... [{"X":1,"Y":2},{"X":3,"Y":4}...]

Я не хочу, чтобы Х и Y были там. Так что я после ..

... [{1,2},{3,4}...]

Итак, я пытался сделать следующее (что не работает)

(from p in foos
 select new p.X + "," + p.Y).ToArray()

или

(from p in foos
 select new string(p.X+ "," + p.Y)).ToArray()

но безрезультатно (не компилируется).

Может кто-нибудь помочь, пожалуйста?

Ответы [ 4 ]

7 голосов
/ 14 мая 2009
(from p in foos
 select String.Format("{{{0}, {1}}}", p.X, p.Y)).ToArray()
5 голосов
/ 14 мая 2009
foos.Select(p=>p.X + "," + p.Y)

Или если вы используете синтаксис Linq:

(from p in foos
 select p.X + "," + p.Y).ToArray()
1 голос
/ 14 мая 2009

JSON является членом сериализатора и использует имена. Если вы не хотите имен, не используйте JSON. Может быть, просто StringBuilder, тогда?

StringBuilder sb = new StringBuilder("[");
foreach(var foo in items) {
  sb.Append('{').Append(foo.X).Append(',').Append(foo.Y).Append("},");
}
sb[sb.Length - 1] = ']';
string s = sb.ToString();
0 голосов
/ 14 мая 2009

Почему бы просто не создать строку JSON самостоятельно, чтобы иметь полный контроль над ее настройкой, а не использовать метод сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...