One possible option is to get a list of all combinations of items in the array, then check which one of those has the sum of your target number.
I found an extension method for getting the combinations here (copied below).
public static IEnumerable<T[]> Combinations<T>(this IList<T> argList, int argSetSize)
{
    if (argList == null) throw new ArgumentNullException("argList");
    if (argSetSize <= 0) throw new ArgumentException("argSetSize Must be greater than 0", "argSetSize");
        return combinationsImpl(argList, 0, argSetSize - 1);
}
private static IEnumerable<T[]> combinationsImpl<T>(IList<T> argList, int argStart, int argIteration, List<int> argIndicies = null)
{
    argIndicies = argIndicies ?? new List<int>();
    for (int i = argStart; i < argList.Count; i++)
    {
        argIndicies.Add(i);
        if (argIteration > 0)
        {
            foreach (var array in combinationsImpl(argList, i + 1, argIteration - 1, argIndicies))
            {
                yield return array;
            }
        }
        else
        {
            var array = new T[argIndicies.Count];
            for (int j = 0; j < argIndicies.Count; j++)
            {
                array[j] = argList[argIndicies[j]];
            }
            yield return array;
        }
        argIndicies.RemoveAt(argIndicies.Count - 1);
    }
}
Now you just need to call it with the number of combinations you want in your groups. For example, if you wanted to find groups of 2:
List<int> ints = new List<int>() { 1, 2, 3, 4, 5 };
int target = 6;
var combs2 = ints.Combinations(2)
    .Where(x => x.Sum() == target);
This will return 1,5 and 2,4. You can then repeat this up to the maximum number of items you want in a group.
If you want to get all the results at once, make a new extension method that will do the unioning for you:
public static IEnumerable<T[]> AllCombinations<T>(this IList<T> argsList)
{
    for (int i = 1; i <= argsList.Count; i++)
    {
        foreach (var combo in argsList.Combinations(i))
        {
            yield return combo;
        }
    }
}
Then you can get all your combinations at once by running
var allCombos = ints.AllCombinations()
    .Where(x => x.Sum() == target);
So for your example, it will return 1,5, 2,4, and 1,2,3 in one collection.