在我的MVC控制器中,我有以下linq查询(工作正常):
var result = from li in lineItems
join r in rates on li.something = r.something
select new
{
li.something
li.somethingElse
li.another
r.something
r.somethingElse
r.rate1
r.rate2
r.rate3
r.rate4
};
return JSON(result.ToList(), JsonRequestBehavior.AllowGet);
这会产生一个平坦的物体。然而,我真正需要的是让费率成为他们自己的一个对象,更深层次,如下:
{
li.something
li.somethingElse
li.another
r.something
r.somethingElse
rates = {
{id = "1", value = r.rate1}
{id = "2", value = r.rate2}
{id = "3", value = r.rate3}
{id = "4", value = r.rate4}
}
}
我很难让C#语法正确实现。硬编码id很好。我将始终只有1 2 3和4的费率。
答案 0 :(得分:3)
您可以定义费率'作为匿名对象数组的属性,请参阅下面的示例以供参考。
{
li.something,
li.somethingElse,
li.another,
r.something,
r.somethingElse,
rates = new[]{
new {id = "1", value = r.rate1},
new {id = "2", value = r.rate2},
new {id = "3", value = r.rate3},
new {id = "4", value = r.rate4}
}
}
答案 1 :(得分:0)
我最终这样做了:
rates = new
{
Rate1 = new {id = "1", value = r.rate1}
Rate2 = new {id = "2", value = r.rate2}
Rate3 = new {id = "3", value = r.rate3}
Rate4 = new {id = "4", value = r.rate4}
}
没有抛出任何错误。它命名为JSON,我并不需要,但我想它也没有伤害任何东西。