を使用して、プリミティブプロパティにオブジェクトを展開する方法:のは、私は次のクラスがあるとしましょうLINQ
public class StudentTeacher
{
public Student Student {get; set;}
public Teacher Teacher {get; set;}
public int OverlappingClasses {get; set;}
}
さて、私のコードでは、私はオブジェクトのリストを持っています。
List<StudentTeacher> studentTeacher = GetStudentTeachers();
ここで、すべてのプロパティをオブジェクトではなくプロパティとして選択する必要があります。
たとえば、私はこれを行うことができます:とそれはオブジェクト(IEnumerable)のリストを返します。
しかし、私は複数のプロパティを選択した場合、すなわちstudentTeacher.Select(X => {x.Student、x.Teacher}新しい)。ToListメソッド()戻り値の型ではなく、この複雑な匿名の、IEnumerable {Anonymous {Student, Teacher}}
方法でありますタイプIは、プロパティを持つシンプルな匿名型を持つことができます。このようにするには、select句にすべてのプロパティを明示的に指定する方法がありますが、私の特定の使用例では、各オブジェクトに30以上のプロパティがあり、プロパティの総数は100を超えます(これはAnonymous{StudentID, StudentName, StudentLastName, TeacherID, TeahcerName, TeacherLastName, etc.}
です)。 。)
反射を使用してこれを行う方法があるかもしれませんが、わかりません。しかし、これらのクラスの両方に同じ名前のプロパティがありますか? – adiga
オブジェクトを単一の匿名型にフラット化したいのですか?それで、Student.IdはStudentIdなどになりますか?その場合、 はどのように参照ループを処理する予定ですか? – john
DTOを作成してAutoMapperを使用してみませんか? –