2011-06-13 64 views
0

我想动态设置来自LINQ的输出的列名。像这样:在LINQ中动态设置列类型

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

我需要这样做,因为我有基于的条件和每列三列做才能有2种不同的类型,如floatintdouble

有谁有什么建议如何做到这一点?

+1

不太清楚你的代码,但你可以使用Select(new {})选项。您也可以使用[LINQPad](http://ow.ly/5gv6D)进行实验。 – John 2011-06-13 15:27:35

+0

这是什么意思,“每列有两种不同的类型,比如......(3种类型)'? – Snowbear 2011-06-13 16:02:01

回答

0

LINQ to SQL处理静态类型,虽然有一些技巧可以做。除了使用Convert.ToInt32等将适当的类型更改为您想要投射时所需的值之外,您无法立即更改该字段的类型。

或者,你可以尝试的价值铸造到每个从查询三类:

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

这样,你适当地有三个投,可以在正确的领域吸。在处理记录时,甚至可以使用反射包装来获得与所需内容相似的内容。我不知道Convert是LINQ支持的,但你应该可以做类似的事情。

HTH。