你好,我有以下类
public class bizOrg
{
public string name { get; set; }
public int p_id { get; set; }
public virtual product product { get; set; }
public IEnumerable<newStructure> newStructure { get; set; }
}
和
public class newStructure
{
public int project_id { get; set; }
public string a_name { get; set; }
public string a_phone { get; set; }
public virtual product product { get; set; }
}
我有以下Linq语句
var acc = (from c in db.p_account
where c.p_id == id
select new bizOrg
{
p_id = c.product.id,
name = c.name,
newStructure= new newStructure
{
a_name = c.name,
a_phone = c.phone,
}
});
在上面的linq语句中,我得到的情报错误说
Cannot implicitly convert type newStructure to 'System.Collections.Generic.IEnumerable<newStructure>' . An explicit conversion exists
请告诉我如何纠正这个错误。由于
newStructure
需要是一个集合。如果您只有一个平面列表(意味着底层集合将只有一个项),那么您可以这样做:
var acc = (from c in db.p_account
where c.p_id == id
select new bizOrg
{
p_id = c.product.id,
name = c.name,
newStructure= new List<newStructure>
{ new newStructure()
{
a_name = c.name,
a_phone = c.phone,
}
}
});
如果需要其他组织(例如按name
或其他属性分组),则需要在期望的输出中提供更多细节
这段代码;
select new bizOrg
{
p_id = c.product.id,
name = c.name,
newStructure= new newStructure
{
a_name = c.name,
a_phone = c.phone,
}
});
正在创建一个单独的newStructure
实例,并试图将其分配给IEnumerable<newStructure>
类型的属性;
newStructure = new { new newStructure() { a_name = c.name, a_phone = c.phone } }
使用静态初始化器将单例对象放入集合中。
您必须在linq语句中创建一个新的IEnumerable<newStructure>
。它需要一个对象集合,在这里你只分配一个对象,而不是一个对象的集合。
var acc = (from c in db.p_account
where c.p_id == id
select new bizOrg
{
p_id = c.product.id,
name = c.name,
newStructure= new List<newStructure>{
new newStructure{
a_name = c.name,
a_phone = c.phone,
}
}
});