2011-06-13 2 views
0

Je souhaite définir dynamiquement les noms de colonnes d'une sortie à partir de LINQ. Comme si:Définition dynamique du type de colonne dans LINQ

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

je dois le faire parce que je dois faire l'ordre par trois colonnes en fonction de la condition et chaque colonne ont 2 différents types comme float, int et double

Est-ce que quelqu'un avoir des suggestions sur la façon dont cela peut être fait?

+1

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

+0

Qu'est-ce que cela signifie que 'chaque colonne a 2 types différents comme ... (3 types ici)'? – Snowbear

Répondre

0

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.

Questions connexes