0

次のコードでエラーが発生し、メソッドグループListStudentsをgeneric.listに変換できません。ListStudentsの最後で()を実行すると、次のようになります。配列をリストに変換できません

私がやろうとしているのは、一部のユーザーを配列にハードコーディングして、GETリクエストで返すことだけです。これに対する修正はありますか?

    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "")]
    List<Student> GetStudentCollection();
}
[DataContract(Name="Student")]
public class Student
{
    [DataMember(Name = "StudentID")]
    public string StudentID { get; set; }
    [DataMember(Name = "FirstName")]
    public string FirstName { get; set; }
    [DataMember(Name = "LastName")]
    public string LastName { get; set; }

}
public class RawDataService : IReceiveData
{
    public Student[] ListStudents()
    {
       List<Student> student = new List<Student>()
       {
           new Student { StudentID="bla", FirstName="bla", LastName="bla"},
           new Student { StudentID="bla1", FirstName="bla1", LastName="bla1"},
           new Student { StudentID="bla2", FirstName="bla2", LastName="bla2"}
       };
        return student.ToArray();
    }

    public List<Student> GetStudentCollection()
    {
        return ListStudents(); //error on this line, cant convert array to list
    }
4

3 に答える 3

2

ListStudentsはメソッドであり、プロパティではないので、これを試してください。

return ListStudents();

また、次ListStudents()のようなものを返すListようにメソッドを変更します。

    public List<Student> ListStudents()
    {
        List<Student> student = new List<Student>()
        {
            new Student { StudentID="bla", FirstName="bla", LastName="bla"},
            new Student { StudentID="bla1", FirstName="bla1", LastName="bla1"},
            new Student { StudentID="bla2", FirstName="bla2", LastName="bla2"}
        };
        return student;
    }
于 2012-04-05T17:29:03.780 に答える
1

配列を使用する理由がない限り、リストをそのまま返します。CPUを使って配列に変換してから、リストに戻すのはなぜですか。

public class RawDataService : IReceiveData
{
    public List<Student> ListStudents()
    {
       List<Student> students = new List<Student>()
       {
           new Student { StudentID="bla", FirstName="bla", LastName="bla"},
           new Student { StudentID="bla1", FirstName="bla1", LastName="bla1"},
           new Student { StudentID="bla2", FirstName="bla2", LastName="bla2"}
       };
        return students;
    }

    public List<Student> GetStudentCollection()
    {
        return ListStudents(); //error on this line, cant convert array to list
    }

ただし、配列を返す必要がある場合は、エラーのある行を次のように変更します。

  using System.Linq;
  ...
  return ListStudents().ToList();
于 2012-04-05T17:35:33.793 に答える
1

ToListlinq拡張メソッドを使用してみてください。

using System.Linq;

...

public Student[] ListStudents()
{
   List<Student> student = new List<Student>()
   {
       new Student { StudentID="bla", FirstName="bla", LastName="bla"},
       new Student { StudentID="bla1", FirstName="bla1", LastName="bla1"},
       new Student { StudentID="bla2", FirstName="bla2", LastName="bla2"}
   };
    return student.ToArray();
}

public List<Student> GetStudentCollection()
{
    return ListStudents().ToList(); //<-- this is the change you need
}

ただし、変換の数を減らすために、次のようにメソッドを変更することをお勧めします。

public Student[] ListStudents()
{
   return GetStudentCollection().ToArray();
}

public IList<Student> GetStudentCollection()
{
   var students = new List<Student>()
   {
       new Student { StudentID="bla", FirstName="bla", LastName="bla"},
       new Student { StudentID="bla1", FirstName="bla1", LastName="bla1"},
       new Student { StudentID="bla2", FirstName="bla2", LastName="bla2"}
   };

   return students();
}
于 2012-04-05T17:30:58.300 に答える