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