0

我正在使用动态 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 然后返回 Auto 然后返回 2 等的方法......

我将非常感谢那些比我更有学问的人的帮助。

4

1 回答 1

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() });

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

于 2011-02-09T00:11:44.513 回答