设置父级时是否可以初始化嵌套属性?

我想知道以下情况是否可能,以及它是否会对性能产生好处。

给出此结构;

public class X
{
    [JsonIgnore]
    public List<Y> Y { get; set; } 
}

public class Y
{
    [JsonIgnore]
    public List<Z> Z { get; set; }
}

public class Z
{
   ...
}

简短版本

我可以在一行中初始化X.Y.Z吗?

工作(foreach)版本;

X x = null;
var dbitem = db.SingleOrDefault(...);
if (dbitem != null)
{
    x = new X
    {
        Y = dbX.dbY.Select(a => 
            JsonConvert.DeserializeObject<Y>(a.json)).ToList()
    };

    x.Y.ForEach(a =>
        a.Z = dbX.dbY.Single(b => b.id == a.id)
          .dbZ.Select(q => JsonConvert.DeserializeObject<Z>(q.json)).ToList());
}

实验性

一次性创建Y和Z,无需查询.Single(b => b.id == a.id)

x = new X
{
   Y = dbX.dbY.Select(a =>
            JsonConvert.DeserializeObject<Y>(a.json).Z.AddRange(
                    a.dbZ.Select(b =>
                    JsonConvert.DeserializeObject<Z>(b.json)).ToList()))
};
  1. 获取与dbX项(FK)关联的dbY项
  2. 反序列化所有dbY项到对象Y
  3. 对象Y具有要在Y级别初始化的List属性。我想这样做是因为在那一刻,我已经引用了所有Z对象(按FK)。

步骤3是我不知道该怎么做的地方。如何从该引用中初始化那些Z对象?

如果问题不清楚或标题不能反映问题,请告诉我。

anxinsimu 回答:设置父级时是否可以初始化嵌套属性?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3151647.html

大家都在问