Intermediate C# Programming 2 DAY IN-PERSON TRAINING COURSE - £650 plus VAT


This follow-on to our popular Programming with C# course will introduce those with some C# experience to more advanced concepts such as 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.


2 days


£650 plus VAT


Delegates should have a working knowledge of C#, to the level provided by our Programming with C# course. If in doubt please contact us before booking.

Detailed course contents


More Error handling

  • Review of 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
  • Throwing an exception, passing part of a message as an argument
  • Custom Exceptions
  • Defining Custom Exceptions
  • Throwing custom Exceptions

Abstract behaviour in classes

  • Creating an abstract class
  • Members of an abstract class
  • Concrete and abstract properties
  • 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 Interface


  • LINQ (Language INtegrated Query)
  • Example LINQ query
  • How LINQ works
  • LINQ query syntax
  • The query variable
  • The from clause
  • The select clause
  • Returning a customised data type
  • The where clause
  • The orderbyclause
  • The group clause
  • The Single method
  • Aggregate functions
  • Aggregate functions where no arguments are required
  • Lambda Expressions
  • Example: Lambda Expressions requiring only one line of code

Working with XML

  • XML and .NET
  • The System.Xmlnamespace
  • 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 GetElementsByTagNamemethod
  • The SelectNodes method
  • Modifying an XML document
  • Serialising objects into XML
  • Default XML layout
  • Customising the default XML layout
  • Modifying XML output without access to the class code
  • Deserialising XML to an object
  • LINQ and XML
  • Example: creating XML with Linq

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
  • Adding attribute constructors
  • Viewing more details about the attributes


  • What are Indexers?
  • Syntax: Declaring an Indexer
  • Example: Class with an indexer
  • Using indexers
  • Overloaded Indexers
  • Example: class with overloaded indexers

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
  • Command parameters
  • Adding parameters to commands

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



Lambda Expressions

Anonymous types


Click on a date to book it

Can't see a suitable date or location?
This course is also available as a Live remote one on one course, as an in-person one on one course or as a private (closed) course.
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?
    • Please arrive for a 9.30am start on the first day of your course. Subsequent days will usually start at 9am but check with your instructor. The course will end at 5pm 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. The invoice is payable within 30 days and payment can be made by bank transfer (BACS etc), cheque or card.

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

  • Are refreshments provided?
    • 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.

Other courses