tags:

views:

42

answers:

2

Hello Friends,

I was wondering if i can consolidate below 2 linq statments into 1 statment. I am sure it should be possible, but various attempts i am unable to manage.

var prevProvisionsBySubBook = (from provision in prevProvisions
               group provision by provision.SubBook
                   into subBookGrouping
                   select
                   new
                   {
                       Key = subBookGrouping.Key,
                       Value = subBookGrouping.Sum(t => t.ProvisionUSD)
                   });


        var currentProvisionsBySubBook
            = (from provision in currentProvisions
               group provision by provision.SubBook
                   into subBookGrouping
                   select new
                   {
                       Key = subBookGrouping.Key,
                       Value = subBookGrouping.Sum(t => t.ProvisionUSD)
                   });

        var adjustmentChangeBySubBook
            = (from current in currentProvisionsBySubBook
               select new
               {
                   Key = current.Key,
                   Value = current.Value
                           - (prevProvisionsBySubBook.Any() ? prevProvisionsBySubBook.Where(t => t.Key == current.Key).Single().Value : 0)
               });

any help would be apprecaited.

A: 
currentProvisionsBySubBook.Concat(adjustmentChangeBySubBook);
Steven
This cant work Steven, if you read the question again, i am actually subtracting the value based on key match.
netmatrix01
+2  A: 

You can do it like this:

var adjustmentChangeBySubBook =
    from provision in
        (from currentProvision in currentProvisions select new
            {
                currentProvision.SubBook,
                CurrentUSD = currentProvision.ProvisionUSD,
                PreviousUSD = 0
            }).Concat
        (from prevProvision in prevProvisions select new
            {
                prevProvision.SubBook,
                CurrentUSD = 0,
                PreviousUSD = prevProvision.ProvisionUSD
            })
    group provision by provision.SubBook into subBookGrouping select new
    {
        subBookGrouping.Key,
        Value = subBookGrouping.Sum(t => t.CurrentUSD - t.PreviousUSD)
    };
Fede