在 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
有一些无效的参数
您正在尝试将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 中。