Guga Todua
Guga Todua

Reputation: 522

How do I concatenate tables with different properties?

I have two tables with different columns.

Balance.cs

    public int Id { get; set; }
    public string Location { get; set; }
    public decimal Balance { get; set; }
    public string Asset { get; set; }
    public decimal ValueInUSD { get; set; }

Reserve.cs

    public decimal? Balance { get; set; }
    public string Asset { get; set; }

MainTable.cs

    public string Asset { get; set; }
    public decimal BalanceFromBalanceTable{ get; set; }
    public decimal BalanceFromReserveTable{ get; set; }

My goal is to fill MainTable with data from Balance and Reserve tables. Problem is that these tables have different properties.

EDIT: Example with data as requested.

**Balance table**
Asset - USD; Balance - 25; 
Asset - BTC; Balance - 10;
**rest of the columns are irrelevant

**Reserve table**
Asset - USD; Balance -200;
Asset - BTC; Balance - 1;

**Main Table**
Asset - USD; BalanceFromBalanceTable - 25; BalanceFromReserveTable - 200;
Asset - BTC; BalanceFromBalanceTable - 10; BalanceFromReserveTable - 1;

Upvotes: 0

Views: 107

Answers (2)

Jury Golubev
Jury Golubev

Reputation: 334

var mainTableCol = from b in balance
join r in reserve on b.Asset equals r.Asset
select new MainTable(){ Asset = b.Asset
                       ,BalanceFromBalanceTable = b.balance
                       ,BalanceFromReserverTable = r.balance }; 

Upvotes: 3

Guga Todua
Guga Todua

Reputation: 522

Fixed it like this :

    List<Balance> actives = item.GetItems();
    List<Reserve> liabilities = Reserve.GetLiabilities();
    List<MainTable> main= new List<MainTable>();
                foreach(var active in actives)
                {
                    foreach(var liability in liabilities)
                    {
                        if (active.AssetId == liability.AssetId)
                        {
                            main.Add(new MainTable
                            {
                                Active = active.Balance,
                                Liability = liability.Deposits,
                                AssetId = active.AssetId
                            });
                        }
                    }
                }

Upvotes: 0

Related Questions