Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匿名选择中的C#linq增量变量_C#_Linq - Fatal编程技术网

匿名选择中的C#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

在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.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()
?但我想通过索引这个查询来动态地获取系数,并点击数据库或内存?我正在将完成的测验转换为列表