匿名选择中的C#linq增量变量
在linq中,是否可以在匿名选择中增加变量 例如,这是我的代码:匿名选择中的C#linq增量变量,c#,linq,C#,Linq,在linq中,是否可以在匿名选择中增加变量 例如,这是我的代码: int[] coefficients = { 1, 2, 3, }; int i = 0; var verbalResult = from fq in finishedQuizzes from vq in fq.Quiz.VerbalQuizes group vq by vq.Question.ExamT
int[] coefficients = { 1, 2, 3, };
int i = 0;
var verbalResult =
from fq in finishedQuizzes
from vq in fq.Quiz.VerbalQuizes
group vq by vq.Question.ExamTagId into r
select new
{
Tag = r.First().Question.ExamTag.Name,
CorrectAnswerCount = r.Sum(e => e.ISMovedAnswerCorrect ? 1 : 0),
questionCount = r.Count(),
coefficient = coefficients[i],
i++
};
我想通过指数(I)得到系数。我可以这样递增
I
变量吗 不,这是不可能的。但有两种解决办法。您可以在索引器中增加i
[...]
coefficient = coefficients[i++],
[...]
或者使用索引器:
var verbalResult = .... into r select r;
var result = verbalResult.Select((item,index) =>{ new { Tag = ... } /* index is the current position */}
当i
或索引
超过系数时,请注意索引自动失效异常。长度
有时LINQ(语言位)不如实际可用的库方法有用。如果您坚持使用扩展方法,则会有一个超负荷的Select
将索引交给您。所以你想要的一切
基本上:
.Select((x, i) => {...})
你试过了吗?为什么不直接做
i=verbalResult.Count()
?但我想通过索引这个查询来动态地获取系数,并点击数据库或内存?我正在将完成的测验转换为列表