我如何一次单步执行IList一个字段?

时间:2011-02-08 23:58:00

标签: vb.net linq visual-studio-2008 collections dynamic-linq

我正在使用Dynamic LINQ库代码示例来动态返回一些数据。我返回的列数根据用户输入而变化。我将IQueryable枚举为IList。

我需要做的是一次一步地穿过Ilist。我可以通过迭代IList的行一次获得一行,但我不能在我的生活中从集合中拉出一个字段。

例如,这里我返回两列(硬编码用于测试,但在prod中它将根据用户选择的字段而变化):

Dim Dynq = dc.dt _
                    .Where("RUN_ID = """ & runNumber & """ and Upper_Pressure > 95") _
                    .OrderBy("Upper_Pressure") _
                    .Select(" new (Run_ID,Process)")

        Dim something = DirectCast(Activator.CreateInstance(GetType(List(Of )).MakeGenericType(Dynq.ElementType), Dynq), IList)

现在我可以从Ilist中取出一个字段,如果我知道列名称有:

something.Run_ID.ToString

但是我不知道我在运行时使用的列,并且在运行时设置的变量中动态插入它不起作用。

所以在摘要中我有一个看起来像这样的Ilist

1  |  Auto
2  |  Auto
3  |  Manual
4  |  Manual

我想要一种回归的方法 1 然后回来 汽车 然后 2 等...

我非常感谢那些比我更了解的人的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题有点令人困惑,但我认为您想要将您的返回集平展为按列排列特定列作为元素然后排...

您可以使用的一种方法是SelectMany运算符。

例如(抱歉在C#,因为我的大脑正在转动一个跟踪!):

// Find flattened list of some explicitly specified property values...
var flattened = something.SelectMany(e => new [] { e.Run_ID.ToString(), e.Process.ToString() });

不确定这是不是你的追求,但它可能是朝着正确方向迈出的一步。