LINQ to SQL работает со статическими типами, хотя есть некоторые приемы, которые вы можете сделать. Вы не можете изменить тип поля на лету, кроме как использовать Convert.ToInt32 и т. Д., Чтобы изменить соответствующий тип на значение, которое вам нужно в то время, когда вы хотите его привести.
В качестве альтернативы, вы можете попробовать привести значение к каждому из трех типов из запроса:
from c in ctx
select new
{
IntVal = c.Value,
DoubleVal = Convert.ToDouble(c.Value),
.
.
}
Таким образом, вы получите все три наложенных заклинания соответствующим образом и сможете сосать в правильном поле. При работе с записью вы можете даже использовать обертку вокруг отражения, чтобы получить нечто похожее на то, что вы хотите. Я не знаю, что Convert поддерживается LINQ, но вы должны быть в состоянии сделать что-то подобное.
НТН.