Динамическое задание типа столбца в LINQ

Я хочу динамически установить имена столбцов вывода из LINQ. Вот так:

summary Rows.Field<Type>("Name")

Мне нужно сделать это, потому что я должен сделать заказ по трем столбцам на основе условия, и каждый столбец имеет 2 разных типа, таких как float, int и double

Есть ли у кого-нибудь предложения о том, как это можно сделать?


person Shivi    schedule 13.06.2011    source источник
comment
Не слишком уверен в своем коде, но вы можете использовать опцию Select(new{}). Вы также можете использовать для экспериментов LINQPad.   -  person John    schedule 13.06.2011
comment
Что это значит, что each column has 2 different types like ... (3 types here)?   -  person Snowbear    schedule 13.06.2011


Ответы (1)


LINQ to SQL работает со статическими типами, хотя есть некоторые приемы, которые вы можете использовать. Вы не можете изменить тип поля на лету, кроме как использовать Convert.ToInt32 и т. д., чтобы изменить соответствующий тип на значение, которое вам нужно в то время, когда вы хотите его привести.

В качестве альтернативы вы можете попробовать привести значение к каждому из трех типов из запроса:

from c in ctx
select new
{
    IntVal = c.Value,
    DoubleVal = Convert.ToDouble(c.Value),
    .
    .
}

Таким образом, у вас будут все три броска должным образом, и вы сможете сосать правильное поле. При работе с записью вы даже можете использовать обертку вокруг отражения, чтобы получить что-то похожее на то, что вы хотите. Я не знаю, поддерживается ли Convert LINQ, но вы должны сделать что-то подобное.

ХТН.

person Brian Mains    schedule 14.06.2011