我正在使用动态LINQ库代码示例来动态返回一些数据。我要返回的列数是可变的,具体取决于用户输入。我将IQueryable枚举到一个IList中。
我需要做的是一次遍历Ilist一个字段。我可以通过遍历IList的行来一次获得一行,但是我一生都无法从集合中取出一个字段。
例如,这里我返回两列(硬编码用于测试,但在生产过程中,它将根据用户选择的字段而变化):
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,依此类推...
我将不胜感激那些比我学得更多的人的帮助。
您的问题有点令人困惑,但是我想您想弄平返回集,以按列然后按行的顺序将特定列作为元素返回...
您可以使用的一种方法是SelectMany运算符。
例如(对不起,由于我的大脑转向单轨C#!):
// Find flattened list of some explicitly specified property values...
var flattened = something.SelectMany(e => new [] { e.Run_ID.ToString(), e.Process.ToString() });
不知道这是否是您的追求,但这可能是朝正确方向迈出的一步。