C# 如何为json属性而不是“数据”返回null:[]

C# 如何为json属性而不是“数据”返回null:[],c#,json,entity-framework,linq,C#,Json,Entity Framework,Linq,我已经把我的财产装饰成 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public IEnumerable<Season> seasons { get; set; } 这里有一个一般性的答案 NullValueHandling属性处理null。LINQ的select从不返回null,而是返回一个空IEnumerable。这就是为什么在生成的JSON中会看到“数据”:[] 要使NullValueHandlin

我已经把我的财产装饰成

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public IEnumerable<Season> seasons { get; set; }
这里有一个一般性的答案 NullValueHandling属性处理null。LINQ的select从不返回null,而是返回一个空IEnumerable。这就是为什么在生成的JSON中会看到“数据”:[]

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

在一边 考虑将查询分解成更小的块

这里有一个一般性的答案 NullValueHandling属性处理null。LINQ的select从不返回null,而是返回一个空IEnumerable。这就是为什么在生成的JSON中会看到“数据”:[]

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

在一边
考虑将查询分解成更小的块

经过数小时的拔毛,成功了

private IEnumerable<Season> _seasons;

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public IEnumerable<Season> seasons
{
    get { return _seasons == null || _seasons.Count() == 0 ? null : _seasons; }
    set { _seasons = value; }
}

特别感谢@ShaunLuttin在数小时的拉扯头发后获得的灵感和成功

private IEnumerable<Season> _seasons;

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public IEnumerable<Season> seasons
{
    get { return _seasons == null || _seasons.Count() == 0 ? null : _seasons; }
    set { _seasons = value; }
}

特别感谢@ShaunLuttin激发灵感

我是古玩。。为什么LINQ代码会有问题。。它将返回带数据的列表或空列表,JSON序列化程序将对其进行序列化。。。只要解析JSON对象的应用程序对此抱怨,这就不应该是一个问题,因为linq查询永远不会返回null。这将返回一个IQueryable,但当它计算查询时,它将返回一个空列表,而不是null。LINQ不会返回null,因此您的null handling属性不起任何作用。您可以执行Queryable.ToList并检查计数,如果计数为零,则将目标变量设置为null考虑更改/简化问题的查询,这样想回答问题的人就可以试着回答。我是个古玩。。为什么LINQ代码会有问题。。它将返回带数据的列表或空列表,JSON序列化程序将对其进行序列化。。。只要解析JSON对象的应用程序对此抱怨,这就不应该是一个问题,因为linq查询永远不会返回null。这将返回一个IQueryable,但当它计算查询时,它将返回一个空列表,而不是null。LINQ不会返回null,因此您的null handling属性不起任何作用。您可以执行Queryable.ToList并检查计数,如果计数为零,则将目标变量设置为null考虑更改/简化问题的查询,这样,试图回答问题的人可以运行它。这是一个非常干净的解决方案,好主意!您可以使用_seasures?.Count==0代替_seasures==null。你也应该使用_seasures.Any,而不是使用Count@Mafii已更改为获取{return\u seasures!=null&&u seasures.Any?\u seasures:null;}自。Any可能引发NullException?您可以使用_seasures?.Any。只有当季节不为空时,才会执行任何。休息似乎不错,请不要忘记更新你的答案;这是一个非常干净的解决方案,好主意!您可以使用_seasures?.Count==0代替_seasures==null。你也应该使用_seasures.Any,而不是使用Count@Mafii已更改为获取{return\u seasures!=null&&u seasures.Any?\u seasures:null;}自。Any可能引发NullException?您可以使用_seasures?.Any。只有当季节不为空时,才会执行任何。休息似乎不错,请不要忘记更新你的答案;
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
          })
}
private IEnumerable<Season> _seasons;

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public IEnumerable<Season> seasons
{
    get { return _seasons == null || _seasons.Count() == 0 ? null : _seasons; }
    set { _seasons = value; }
}