如何为json属性返回null而不是" data":[]

时间:2017-02-27 00:05:29

标签: c# json entity-framework linq

我把我的财产装饰为

from ul in userLeagues
select new Map.League
{
    id = ul.LeagueID,
    seasons = from ss in ul.Standings
              where inc.Seasons && ss.LeagueID == ul.LeagueID
              select new Map.Season
              {
                   seasonId = ss.Season.SeasonId,
                   seasonName = ss.Season.SeasonName
              })
}

如果没有记录,下面的代码返回 <tr ng-repeat="date in futureDates"> <td> {{ date | date : 'yyyy-MM-dd' }} </td> </tr> 就会出现问题。

$('#sandbox-container .input-daterange').datepicker({
    ....
});

2 个答案:

答案 0 :(得分:3)

以下是一般性答案

NullValueHandling属性处理null。 LINQ的select永远不会返回null,而是返回一个空的IEnumerable。这就是您在结果JSON中看到“data”: []的原因。

要使NullValueHandling属性有效,请在结果为空IEnumerable时返回null。例如,您可以根据自己的情况调整以下代码。

Run in DotNetFiddle

var foo = new List<string>();

var bar = !foo.Any()
    ? null
    : from f in foo select f;

Console.WriteLine(bar == null); // true

这就是它的样子

from ul in userLeagues
let standings = from ss in ul.Standings
                where inc.Seasons && ss.LeagueID == ul.LeagueID
select new Map.League
{
    id = ul.LeagueID,
    seasons = !standings.Any()
        ? null
        : from ss in standings
          select new Map.Season
          {
              seasonId = ss.Season.SeasonId,
              seasonName = ss.Season.SeasonName
          })
}

除了

考虑将您的查询分解为更小的块。

答案 1 :(得分:2)

经过几个小时的拔毛,成功。

ngAfterViewInit()

特别感谢@ShaunLuttin鼓舞人心的