These days I have learned some basic usage of C#. I think that because C# is often used in application programming ,we should practice the language in an engineering way rather than solving some algorithmic problems. But what is the best way to practice C# if I cannot find any projects related to the language in the work.
I always have the same problem, it is not easy to find a project that you can just implement using the new language.
Why not try to implement a project that you once implemented in another language again in C#?
Find an open-source project that you're interested in which uses this technology and try to contribute to it.
If you can't find your own work to apply your coding skills to, simply join an open-source project - you will find it a valuable real-life experience in coding and having your work critiqued by others.
Think of something really big, and copy it. design it yourself and just work away at it... learn it all at once :)
I think you can try start with personal small utilities. For example, write a file backuper, personal asp.net blog site, password reminder, time tracker, etc..
the product will be used by you, so you will get exceptions or performance problems so you will be learning more..
I hear writing your own blog engine is a popular exercise these days.
You could also check out AntMe, it is a simulation of ants which you program in C#.
There's a few things I use for practice - admittedly, they're more algorithmic than business oriented, but lets face it business oriented stuff can get tedious if that's what you do all day long:
Code Golf on SO - check out the following tags that all have great mini tasks
Project Euler - found at http://projecteuler.net/
Check out other questions on SO to give you ideas of tasks to program - a great one to start off with can be found here http://stackoverflow.com/questions/117812/alternate-fizzbuzz-questions
Attempt to figure out answers to questions that come up on here that you wouldn't otherwise know the answer to.
For practice in business aspects of programming, try and understand what most business wants when it comes to software and that is software to assist them to do their every day jobs. This may come down to software that does specific tasks for a user (i.e. you) or it may be software that allows storage, retrieval and reporting of business data.
- Create a project that allows you to store and retreive data using various patterns, taking note of performance differences of each - i.e. DataSet vs. DataAdapter vs. DataReader vs. LINQ-to-SQL and Stored Procedures vs. TableDirect vs. QueryStrings. There's only so many ways of storing and retrieving data from a database.
- Grab a demo database from the internet - like AdventureWorks or the infamous Northwind and write yourself reports displaying the data in various formats.
I often find that utility software I use that I find online just doesn't quite cut it. Sure some of them have some nice features, but inevitably there's always something missing. So I surf around and find a bunch of utilities that cover everything I think one of them should do, take all the best/most useful bits and [taking note of things I like about each of the tools] I write my own. The best way is to always think: "How do I want to use it" rather than "how must I use it if I program it this way".