我无法弄清楚如何用LINQ表达式来完成这个(for/foreach)的第二部分,并没有找到任何与LINQ相似的例子。 rangeDays将在5到200之间,q1是MyClasses的列表,其中RowID大约在10000到25000之间,没有间隙。LINQ到填充范围
public class MyClass { public int RowID; public object otherData; }
PopulateRange(int rangeDays, List<MyClass> q1){
var q2 = (from a in q1
let Rows = new int[rangeDays]
select new {a.RowID, Rows }).ToList();
foreach(var a in q2)
{
for(int i = 0; i < rangeDays; i++)
{
a.Rows[i] = a.RowID + i;
}
}
在此先感谢。
更新: 我这2个LINQ语句运行,如下图所示(希望这是所有可运行的这段时间)。
public List<MyClass> PopulateRange(int rangeDays, IQueryable<TheirClass> q1)
{
var q2 = (from a in q1
select new MyClass()
{ RowID = a.RowID, Rows = new int[rangeDays] }).ToList();
q2.ForEach(a => a.Rows = Enumerable.Range(0, rangeDays).
Select(i => i + a.RowID).ToArray());
return q2;
}
public class MyClass
{
public int RowID;
public int[] Rows;
}
public class TheirClass
{
public int RowID;
public int ID;
public string Symb;
public DateTime? EventTime;
public decimal? Value;
}
这是可以接受的,但没有人知道为什么下面单个语句引发NotSupportedException“本地序列不能在LINQ用于查询操作的SQL实现除包含运营商。”当我尝试编译&运行:
public List<MyClass> PopulateRange(int rangeDays, IQueryable<TheirClass> q1)
{
var q2 = (from a in q1
select new MyClass()
{ RowID = a.RowID, Rows = Enumerable.Range(0, rangeDays).
Select(i => i + a.RowID).ToArray() }).ToList();
return q2;
}
东西不太对。 `q1`应该是`List`,那么'int`如何具有`RowID`属性? –
Gabe
2011-02-06 16:50:43
......“行”从哪里来? – 2011-02-06 17:01:20