我無法弄清楚如何用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