OK、Select((x, i) => ...)
リテラル形式がないことはわかっていますが、かなり複雑なクエリがあり、投影された出力フィールドの半分が出力の「行番号」に依存するという新しい要件があります。インデックスを導入し、1 つのクエリをリテラル形式で保持する方法はありますか?
また、すべてのソース行が結果に関与するわけではないため、ソースを列挙可能なインデックス付きタプルに射影することはできません。インデックスは、最終的な射影の前、およびすべての結合と場所の後に適用する必要があります。
編集:
元のクエリは大きいので、ここに置くのは無意味です。疑似で単純化してみましょう
from a in source
where somecondition(a)
join b in source2 on a.key equals b.key
where someothercondition(a, b)
select new
{
f1 = a.f1,
oldf2 = func(a.field, b.field),
newf2 = func(a.field, b.field, index)
// ... (20 somthing more projected fields)
}
newf2 のインデックスが必要で、クエリを 2 つのクエリに分割せずに必要です