I got an anonymous type inside a List anBook:
var anBook=new []{ new {Code=10, Book ="Harry Potter"}, new {Code=11, Book="James Bond"} };
Is to possible to convert it to a List with the following definition of clearBook:
public class ClearBook { int Code; string Book; }
by using direct conversion, i.e., without looping through anBook?
In C#, an anonymous type is a type (class) without any name that can contain public read-only properties only. It cannot contain other members, such as fields, methods, events, etc. You create an anonymous type using the new operator with an object initializer syntax.
Essentially an anonymous type is a reference type and can be defined using the var keyword. You can have one or more properties in an anonymous type but all of them are read-only. In contrast to a C# class, an anonymous type cannot have a field or a method — it can only have properties.
Well, you could use:
var list = anBook.Select(x => new ClearBook { Code = x.Code, Book = x.Book}).ToList();
but no, there is no direct conversion support. Obviously you'll need to add accessors, etc. (don't make the fields public) - I'd guess:
public int Code { get; set; } public string Book { get; set; }
Of course, the other option is to start with the data how you want it:
var list = new List<ClearBook> { new ClearBook { Code=10, Book="Harry Potter" }, new ClearBook { Code=11, Book="James Bond" } };
There are also things you could do to map the data with reflection (perhaps using an Expression
to compile and cache the strategy), but it probably isn't worth it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With