代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

我该如何在Linq中做到这一点?

  •  2
  • Pure.Krome  · 技术社区  · 15 年前

    我有一个 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}...]
    

    我不想X和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 回复  |  直到 15 年前
        1
  •  7
  •   Thomas Levesque    15 年前
    (from p in foos
     select String.Format("{{{0}, {1}}}", p.X, p.Y)).ToArray()
    
        2
  •  5
  •   Pure.Krome    15 年前
    foos.Select(p=>p.X + "," + p.Y)
    

    或者如果执行LINQ语法:

    (from p in foos
     select p.X + "," + p.Y).ToArray()
    
        3
  •  1
  •   Marc Gravell    15 年前

    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();
    
        4
  •  0
  •   James Black    15 年前

    为什么不自己创建JSON字符串,这样您就可以完全控制如何设置它,而不是使用序列化方法。