在 c# 中创建具有相同类的对象的属性

本文关键字:同类 对象 属性 创建 | 更新日期: 2023-09-27 18:18:45

我正在尝试的是以下内容:

public class AHME
{
    public string elementName { get; set; }
    public long? elementID { get; set; }
    public AHME[] children { get; set; }
    public static AHME[] GetAHME()
    {
        var listS = new List<AHME>();
        using (var db = new DBEntities())
        {
            AHME sList = db.Stnd.Select(s => new AHME
            {
                elementID = s.ID,
                elementName = s.Name,
            }).ToList();
            
            listS.Add(sList);
            var listT = new List<AHME>();
            using (var db = new DBEntities())
            {
                AHME tList = db.Tr.Join(db.Us, t => t.ID, u => u.ID, (t, u) => new AHME
                {
                    elementID = t.ID,
                    elementName = u.FirstNames + " " + u.LastName,
                    children=listS.ToArray(),
                });
                listT.Add(tList).ToList();
            }
            
            return listT.ToArray();
        }
    }
}

但是我收到以下错误:

无法将类型' System.Collections.Generic.List<LSB.HM.AHME> ' 隐式转换为 ' LSB.HM.AHME

不能将类型'System.Linq.IQueryable<LSB.HM.AHME>'隐式转换为'LSB.HM.AHME'。存在显式转换(您是否缺少强制转换?

此外,对于"AHME sList",如果我可以使用像 var sList 这样的 var 类型,然后它的抛出错误是:

<LSB.HM.AHME>.Add有一些无效的参数

在 c# 中创建具有相同类的对象的属性

您正在尝试将List<AHME>对象分配给AHME变量。像这样尝试:

        var sList = db.Stnd.Select(s => new AHME
        {
            elementID = s.ID,
            elementName = s.Name,
        }).ToList();

Join行也是如此。

问题在于以下块:

        AHME sList = db.Stnd.Select(s => new AHME
        {
            elementID = s.ID,
            elementName = s.Name,
        }).ToList();

不能将IList<T>转换为T

最简单的解决方案是使用var

        var sList = db.Stnd.Select(s => new AHME
        {
            elementID = s.ID,
            elementName = s.Name,
        }).ToList();

感谢所有人和威特威。

我使用了一个 foreach 循环来迭代 var sList 并将 sList 中的项目添加到 ListS 中,从概念上讲,我认为它应该是这样的,因为 sList 包含对象列表,并且需要逐个添加到 ListS 中。