簡體   English   中英

使用Linq在對象中插入IEnumerable集合

[英]Inserting IEnumerable collection in an object using Linq

嗨,我有以下課程

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

請讓我知道如何糾正此錯誤。 謝謝

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>類型的屬性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,                                 
                                     }
                                   }
                            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM