Tabular Editor C#: select measures from multiple tables

Hi EDNA-Team!

As I just started out with c# Scripts in Tabular Editor 3

TLDR:
How can I select all measures from multiple table by hardcoding in a c# script? So that no manual selection is needed.
The goal is to then apply a new FormatString to all the measures included in these tables

===

so instead of
foreach(var m in (Selected.Table.Measures)
{…

I would need something lile
var m = {Model.Tables[“Measures Table 1”].Measures, Model.Tables[“Measures Table 2”].Measures Model.Tables[“Measures Table 2”].Measures};

or Model.Tables[“Measures Table 1”, “Measures Table 2”, “Measures Table 3”].Measures

but I couldn’t find the correct syntax to work in TE3

Thanks,
Alex

Hi @AlexRobe ,

If the table names contain a specific text, you could try something like this:

foreach( var t in Model.Tables.Where(t => t.Name.Contains("Table")) ){
    foreach( var m in t.Measures ){
           {
                m.FormatString = "0";
            }
        }
    }

If you omit this part, it would apply the FormatString to all measures in all tables.
.Where(t => t.Name.Contains("Table"))
.

If you want to provide a list with table names to work through:

var tNames = new List<string>() { "Table1", "Table2" };
foreach(var t in Model.Tables){
    for (int i = 0; i < tNames.Count; ++i)
    if (t.Name == tNames[i]){
        foreach( var m in t.Measures ){
            {
                m.FormatString = "0";
            }
        }
    }
}

.

Or if you wanted to work table by table, update the var tName = “Table1” that’s the part in between the double quotes to run it for that table.

var tName = "Table1";
foreach( var t in Model.Tables.Where( t => t.Name == tName ) ){
    foreach( var m in t.Measures ){
        {
            m.FormatString = "0";
        }
    }
}

I hope this is helpful

2 Likes

Sorry for my late reply.
Thanks Melissa. The nested foreach was the key :pray:

Great to be part of this awesome community! :star_struck: