LINQ to SQL traite des types statiques, bien qu'il y ait quelques astuces que vous pouvez faire. Vous ne pouvez pas changer le type du champ à la volée, à part d'utiliser Convert.ToInt32, etc. pour changer le type approprié à la valeur dont vous avez besoin au moment où vous voulez le lancer.
Alternativement, vous pouvez essayer de jeter la valeur à chacun des trois types de la requête:
from c in ctx
select new
{
IntVal = c.Value,
DoubleVal = Convert.ToDouble(c.Value),
.
.
}
De cette façon, vous auriez tous les trois acteurs de manière appropriée et peut aspirer dans le champ approprié. Lorsque vous travaillez avec l'enregistrement, vous pouvez même utiliser un wrapper autour de la réflexion pour obtenir quelque chose de similaire à ce que vous voulez. Je ne sais pas de Convert est LINQ pris en charge, mais vous devriez être capable de faire quelque chose de la même manière.
HTH.
Vous n'êtes pas sûr de votre code, mais vous pouvez utiliser l'option Select (new {}). Vous pouvez également utiliser [LINQPad] (http://ow.ly/5gv6D) pour expérimenter. – John
Qu'est-ce que cela signifie que 'chaque colonne a 2 types différents comme ... (3 types ici)'? – Snowbear