2011-10-07 84 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); 
    } 
    
相关问题