您好我有以下课程
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语句中,我得到了intelicense错误说
Cannot implicitly convert type newStructure to 'System.Collections.Generic.IEnumerable<newStructure>' . An explicit conversion exists
请告诉我如何更正此错误。谢谢
答案 0 :(得分:2)
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
或其他属性组),那么您需要在所需的输出中提供更多详细信息。
答案 1 :(得分:0)
这段代码;
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 } }
使用静态初始化程序将您的单例放入集合中。
答案 2 :(得分:0)
您必须在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,
}
}
});