For parameterized tests I've created solution with two projects, one is console application, and second one (where my tests are actually) is class library.

My main, console, application looks like this: 

static void Main(string[] args)
{
	Summation mySum = new Summation();
	Console.WriteLine(mySum.MySummation(10).ToString());
	Console.ReadKey();
}

Where class "Summation" is like:

public class Summation
{
	public int MySummation(int myValue)
	{
		return myValue + myValue;
	}
}

Now, let's say that we want to create unit test for 10, 20 and 30 values. Instead of writing three tests we will use parameterized tests like:

[Test]
[Sequential]
public void Summ_results([Values(10, 20, 30)] int sumResult)
{
	Summation mySum = new Summation();
	Assert.AreEqual(sumResult + sumResult, mySum.MySummation(sumResult));
}

Notice part:

[Values(10, 20, 30)] 

With that line and class attribute [Sequential] we said that our test will be executed three times where each time sumResult will be 10, 20 or 30.

Example project you can download from here.

One example to find out number of years of oldest child in a list of parents.
using System;
using System.Collections.Generic;
using System.Linq;

namespace LINQtest
{

    public class Child
    {
        public int Age { get; set; }
    }

    public class Parent
    {
        public Child[] Kids { get; set; }
    }

    public class MyLinq
    {
        public List<Parent> Parents { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Parent parentOne = new Parent();
            parentOne.Kids = new Child[2];

            parentOne.Kids[0] = new Child();
            parentOne.Kids[0].Age = 1;

            parentOne.Kids[1] = new Child();
            parentOne.Kids[1].Age = 2;

            Parent parentTwo = new Parent();
            parentTwo.Kids = new Child[3];
            parentTwo.Kids[0] = new Child();
            parentTwo.Kids[0].Age = 5;
            parentTwo.Kids[1] = new Child();
            parentTwo.Kids[1].Age = 7;
            parentTwo.Kids[2] = new Child();
            parentTwo.Kids[2].Age = 6;

            Parent parentThree = new Parent();
            parentThree.Kids = new Child[2];
            parentThree.Kids[0] = new Child();
            parentThree.Kids[0].Age = 3;

            parentThree.Kids[1] = new Child();
            parentThree.Kids[1].Age = 4;

            MyLinq myLinq = new MyLinq();
            myLinq.Parents = new List();
            myLinq.Parents.Add(parentOne);
            myLinq.Parents.Add(parentTwo);
            myLinq.Parents.Add(parentThree);

            int maxAge = myLinq.Parents.Max(parent => parent.Kids.Max(kid => kid.Age));

            Console.WriteLine("Oldest kid is age of: " + maxAge);
            Console.WriteLine("Press any key");
            Console.ReadKey();
        }
    }
}

POI:

int maxAge = myLinq.Parents.Max(parent => parent.Kids.Max(kid => kid.Age));

Because for example code:

IEnumerable<int> maxAges = myLinq.Parents.Select(parent => parent.Kids.Max(kid => kid.Age));

Will return collection of ages in list of parents.

One dummy example of LINQ:

using System;
using System.Linq;

namespace linqExamples
{
  class Program
  {
    static void Main(string[] args)
    {
      string s = "Test";
      var test = s.Select(d => "b");
      foreach(var b in test)
      {
        Console.WriteLine(b);
      }
      Console.ReadKey();
    }
  }
}