Linq to 对象 C# 嵌套类

本文关键字:嵌套 对象 to Linq | 更新日期: 2023-09-27 18:36:47

public class parent
{
    public string abc { get; set; }
    public childclass pos { get; set; }
}
public class childclass
{
    public string value { get; set; }
}

我目前正在阅读父类的集合

var obj =
(from dia in parent
    select new
    {
        abc = dia.abc,
        pos = new childclass()
        {
            value = dia.pos.value
        },
    })
.ToList();

如何使用linq读取嵌套类子类 反对,这块不起作用

pos = new childclass()
{
    Value = dia.pos.Value
}, 

请告知

Linq to 对象 C# 嵌套类

它工作得很好,我认为你的问题是区分大小写的

类:

public class Parent
{
    public string Abc { get; set; }
    public Childclass Pos { get; set; }
}
public class Childclass
{
    public string Value { get; set; }
}

用:

var parent = new List<Parent> {                
    new Parent { Abc = "abc1", Pos = new Childclass { Value = "Value1" } },
    new Parent { Abc = "abc2", Pos = new Childclass { Value = "Value2" } }
};
var obj =(from dia in parent select new {
                abc = dia.Abc,
                pos = new Childclass()
                {
                    Value = dia.Pos.Value
                },
        }).ToList();

C# 区分大小写。 类childClass中的value字段具有小写的"v"。 您的 LINQ 语句使用大写的"V"引用它。

请尝试以下代码:

var obj = (from dia in parent
            select new
            {
                abc = dia.abc,
                pos = new childclass()
                {
                    value = dia.pos.value // 'Value' has been changed to 'value'
                },
            }).ToList();

下面是我为验证更新的 LINQ 语句是否正常工作而运行的测试:

var parents = new List<parent>()
{
    new parent{abc = "abc", pos = new childclass{ value = "value" }}
};
var obj =
            (from dia in parents // changed to 'parents' to match my variable above
            select new
            {
                abc = dia.abc,
                pos = new childclass()
                {
                    value = dia.pos.value
                },
            }).ToList();
foreach (var par in obj)
{
    Console.WriteLine(par);
}

结果输出为:

"{ abc = abc, pos = ProgrammingTestBed.Program+childclass }"