LINQ - Как построить запрос, когда имя столбца неизвестно до времени выполнения? - PullRequest
0 голосов
/ 15 июля 2010

Дано:

string metadata.XAxisColumn -- contains a column name (e.g., "Date")
string metadata.YAxisColumn -- contains another columnname (e.g., "Close")

Когда я знаю имена столбцов, конечно, я могу сделать:

var query = from record in myView 
    where record.Date >= startDate && record.Date <= endDate
    select record.Close

Однако имена столбцов не известны до времени выполнения. Они в metadata.XAxisColumn и metadata.YAxisColumn.

Как правильно построить запрос, который работает следующим образом:

var query = from record in myView 
    where record.[metadata.XAxisColumn] >= startDate && record.[metadata.XAxisColumn] <= endDate
    select record.[metadata.YAxisColumn]

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Вы можете наследовать от типа объектов 'record' и добавить новое свойство:

public class MyRecord : RecordBase
{
    public XAxis
    {
        get
        {
            switch (metadata.XAxisColumn)
            {
                // for example only; this code will not compile because it depends what kind of object RecordBase is :)
            case X:
                return this.X;
            case Y:
                return this.Y;        
            }
        }
    }
}

Надеюсь, это поможет!

1 голос
/ 15 июля 2010

Вы используете либо ESQL / QueryBuilder (встроенный в EF), либо Microsoft Dynamic Query (или Dynamic LINQ - бесплатно через VS Code Gallery).

0 голосов
/ 15 июля 2010

Вы можете использовать Динамический LINQ для этих запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...