Because it appears that you're using Entity Framework, you shouldn't need to initialize these variables and convert BaseBook to Book. I'm assuming that the "list" variable is of type List<books> in your code sample.
With that in mind, you just need to make use of the "as" instruction.
public class Books:BaseBooks
{
public void Test()
{
List<BaseBooks> listBooks = new Entity.Books(_objUser).GetList();
foreach (BaseBooks obj in listBooks )
{
list.Add(obj as Books);
}
}
}
Or we can make this a bit more concise with LINQ:
public void Test()
{
List<BaseBooks> listBooks = new Entity.Books(_objUser).GetList();
list.AddRange(listbooks.Select( x => x as Books).ToList());
}