Imperative programming is telling the computer explicitly what to do, and how to do it, like specifying order and such
C#:
for (int i = 0; i < 10; i++)
{
System.Console.WriteLine("Hello World!");
}
Declarative is when you tell the computer what to do, but not really how to do it. Datalog / Prolog is the first language that comes to mind in this regard. Basically everything is declarative. You can't really guarantee order.
C# is a much more imperative programming language, but certain C# features are more declarative, like Linq
dynamic foo = from c in someCollection
let x = someValue * 2
where c.SomeProperty < x
select new {c.SomeProperty, c.OtherProperty};
The same thing could be written imperatively:
dynamic foo = SomeCollection.Where
(
c => c.SomeProperty < (SomeValue * 2)
)
.Select
(
c => new {c.SomeProperty, c.OtherProperty}
)
(example from wikipedia Linq)