在我的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的比率。

最佳答案

您可以将'rates'属性定义为对象的匿名数组,请参见以下示例以供参考。

{
    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}
            }
}

09-30 22:40
查看更多