2011-10-07 87 views
0

我的代碼如下。從List <EntityObject>轉換爲EntityObject

public void CreateNewAuthor(List<Author> newAuthor) 
{ 
    publishContext.AddToAuthors(newAuthor); 
} 

我知道這將導致錯誤的AddToAuthors(作者newAuthor)接受實體對象作爲參數,而我傳遞一個List <>。那麼應該如何處理?如何在AddToAuthors()之前將實體對象轉換成列表<>?

+0

列表是作爲名稱最高審計機關一個對象名單「。那麼,您想如何將10位作者的列表轉換爲1位作者? –

+0

也許你應該將你的變量重命名爲'newAuthors' – Jodrell

回答

2

您正在接受多個作者 - 但您正在嘗試撥打單個作者。你是否期望列表中有多個值,或者只有一個值?

這聽起來像你威力只想循環:

public void CreateNewAuthor(List<Author> newAuthors) 
{ 
    foreach (Author newAuthor in newAuthors) 
    { 
     publishContext.AddToAuthors(newAuthor); 
    } 
} 

......或者這是完全有可能的情況下已經提供一次添加多個作者的一種方式。 (我不是英孚的人,所以我不知道)

重要的是你明白這裏的可能性 - 該列表可能不包含作者,一個作者或多個作者。所有這些在你的代碼中是否有效?你想如何處理這些情況?

+0

Thnx ... Jon。我明白我正在做的錯誤。你是對的。 –

1

你可以循環通過列表和添加所有作者的對象列表包含:

foreach (Author author in newAuthor) 
{ 
    publishContext.AddToAuthors(author); 
} 
1

案例1.你知道該列表包含一個項目:

  1. 變化你方法的簽名如下:

    public void CreateNewAuthor(Author newAuthor) 
    

    (引用名稱不是複數的項目清單是非常不直觀的。這是更直觀,你的方法接受的列表Author對象,但要求該名單隻包含一個項目)

  2. 然後,打電話給你的方法如下(即「數」。):

    // using System.Linq; 
    // List<Author> someListOfAuthors = new List<Author> { someAuthor }; 
    CreateNewAuthor(someListOfAuthors.Single()); 
    

    ,或者不使用LINQ:

    CreateNewAuthor(someListOfAuthors[0]); 
    

案例2.列表可以包含任意數量的項目:

  1. 參數重命名從newAuthornewAuthors,對於上面提到的同樣的理由。

  2. 你的方法體改成這樣:

    foreach (Author author in newAuthors) 
    { 
        publishContext.AddToAuthors(author); 
    } 
    
相關問題