Intermediate C# Programming 2 day training course from £590.00 plus VAT

Classroom - per delegate £695.00 plus VAT
£834.00 inc VAT
In person at one of our UK locations, max 10 delegates
In Person one on one course £1,190.00 plus VAT
£1,428.00 inc VAT
In person at one of our UK locations, no other delegates - click here for details
Closed Courses £1,900.00 plus VAT
£2,280.00 inc VAT
In person at a location of your choosing, max 10 delegates (contact us for prices over 10 delegates) - click here for details
Remote live public course £590.00 plus VAT
£708.00 inc VAT
Remotely accessed over the internet, max 6 delegates - click here for details
Remote live one on one course £790.00 plus VAT
£948.00 inc VAT
Remotely accessed over the internet, no other delegates - click here for details


Take your C# skills to the next level with this popular course bringing you right up to date with the latest C# features. This follow-on to our popular Programming with C# course will introduce those with some C# experience to more advanced concepts such as generics, reflection, interfaces, indexers, and how to query collections with LINQ. It will also show you how to read/write data to/from a database using ADO.NET, or to/from XML. It will also cover Lists, lambda expressions, anonymous types, extension methods and more.


2 days


£695 plus VAT

See options at top of the page


Delegates should have a working knowledge of C#, to the level provided by our Programming with C# course. They certainly need to understand concepts such as classes, objects, methods and properties. If in doubt please contact us before booking.

Detailed course contents

Reflection and Custom Attributes

  • What is reflection?
  • The Type type
  • Getting the Type of a class or object
  • Using reflection to find out if a class is abstract or sealed
  • Viewing a type’s properties and methods
  • Other uses of reflection
  • Custom attributes
  • Uses of custom attributes
  • Creating custom attributes
  • Adding custom attributes to a class
  • Viewing the custom attributes of a class
  • Adding attribute properties
  • Using an attribute with properties
  • Adding attribute constructors
  • Viewing more details about the attributes


  • What are Indexers?
  • Declaring an Indexer
  • Using indexers
  • Overloaded Indexers


  • What is generics?
  • Uses for generics
  • Flexibility using generics
  • Substitution parameter naming convention
  • Type safety with generics
  • Using generics with a class


  • Lists
  • Creating a List
  • foreach loop with a List
  • Other supported methods and properties

Abstract behaviour in classes

  • Preventing instantiation from a class
  • Creating an abstract class
  • Members of an abstract class
  • Concrete and abstract methods


  • What is an interface?
  • Interface rules
  • Inheriting from an interface
  • Creating an interface
  • Properties of an interface
  • Methods in an interface
  • Basing a class on an interface
  • Basing an interface on an interface
  • Multiple inheritance
  • Interfaces as variable or parameter data types
  • The IComparable and IComparable interfaces

Lambda Expressions

  • Lambda Expressions
  • Replacing a method with a lambda expression

Object Initializers

  • C# Object Initializers
  • C# Object Initializer syntax
  • C# Object Initializer without constructor
  • C# Object Initializer with constructor

Partial classes

  • Partial classes

Implicitly typed local variables with var

  • Implicitly typed local variables
  • var examples

Extension methods

  • Extending a class without access to its code
  • Using static behaviour
  • Creating an extension method


  • What is a Delegate?
  • Creating a Delegate
  • Referencing a Method
  • Using a delegate
  • Multicasting
  • Creating a Multicasting Delegate
  • Scope
  • Removing Method References
  • Removing Method References - Multicasting


  • LINQ (Language INtegrated Query)
  • LINQ queries
  • How LINQ works
  • The query variable
  • LINQ query syntax
  • The from clause
  • The select clause
  • Returning a customised data type
  • The where clause
  • The orderby clause
  • The group clause
  • The Single method
  • Aggregate functions
  • Aggregate functions where no arguments are required
  • Aggregate functions where the object cannot be directly aggregated

LINQ extension methods

  • Extension Methods in System.Linq
  • Passing lambda expressions
  • Where and OrderBy
  • Combining methods


  • XML and .NET
  • The System.Xml namespace
  • Using XmlReader to read XML
  • Using XmlWriter to create XML
  • Using the DOM
  • Using XmlDocument
  • Using XmlDocument to create a new document
  • Using XmlDocument to create a document from a file
  • The GetElementsByTagName method
  • The SelectNodes method
  • Modifying an XML document
  • LINQ and XML
  • Creating XML with Linq
  • Using LINQ to query XML
  • Querying a sub-element
  • Serialising objects into XML
  • Default XML layout
  • Customising the default XML layout
  • Modifying XML output without access to the class code
  • Changing the name of the root element
  • Deserialising XML to an object
  • Class name different from the name of the root element

Connected data access with ADO.NET

  • What is ADO.NET?
  • ADO.NET namespaces
  • High level data access process
  • Creating a connection object
  • Storing connection strings in config files
  • Command objects
  • CommandType and CommandText
  • Command object methods
  • Disposing of resources
  • The using statement
  • ExecuteNonQuery
  • ExecuteScalar
  • ExecuteReader
  • Data readers
  • Using a Data Reader
  • Cleaning up after data readers
  • Command parameters
  • Adding parameters to commands
  • A command with parameters

ADO.NET disconnected data access

  • The DataTable Object
  • The DataColumn object
  • The DataRow object
  • Manually creating and filling a datatable
  • The Rows collection
  • The Columns collection
  • The DataSet object
  • Data adapters
  • Data adapter properties
  • Working with data locally
  • Filling a DataTable with a data adapter

Error handling

  • Review of basic exception handling (try .. catch.. finally)
  • The Exception Class
  • Catching the Exception instance
  • The Exception Message
  • More error handling
  • Basic Exception Handling
  • try .. catch
  • finally
  • The Exception Class
  • Catching the Exception instance
  • The Exception Message
  • Derived Exception Classes
  • FormatException
  • OverflowException
  • IndexOutOfRangeException
  • DivideByZeroException
  • Catching Multiple Exceptions
  • Exception Nesting
  • Throwing an Exception
  • Passing a message to the Exception class
  • Custom Exceptions
  • Defining Custom Exceptions
  • Throwing custom Exceptions
  • Custom Exception with constructor
  • Throwing a custom exception whose constructor takes arguments


Click on a date to book it

Can't see a suitable date?
Click here to register your interest in this course and we will keep you informed when any new dates are added.


  • What are the course times?
    • Courses start at 9:30am start on the first day of your course. Subsequent days will usually start 30 minutes earlier but check with your instructor. The course will end by 4:30am each day.

  • Do I need to bring anything?
    • No, everything is provided, you only have to bring yourself.

  • How can I pay?
    • Once you have booked you will receive a confirmation email, and shortly after that, an invoice. For in-person public and private courses the invoice is payable within 30 days, for online courses payment is required 7 days before the start of the course. Payment can be made by bank transfer (BACS etc), cheque or card.

  • Is there a dress code?
    • No, there is no dress code for any of our courses.

  • Are refreshments provided?
    • At our in-person courses, mid-morning and mid-afternoon refreshments will be provided. Lunch is not provided but all our venues are in central locations.

  • What is the cancellation policy?
    • Cancellations received within 7 days of making your booking or more than 21 days before the scheduled start date will not incur any charge. For cancellations received between 7 and 21 days before the scheduled start date a 50 percent charge will apply. For cancellations received less than 7 days before the scheduled start date a 100 percent charge will apply. For online courses where you have already been sent course materials, any refund is conditional on the return of the materials at your own expense.

Other courses