循环产生很多行?

时间:2014-10-27 15:11:40

标签: c# linq

我无法理解为什么这段代码会产生很多空行:

int nr = 0;
foreach (var item in lists.Select(x => x.match_id))
{
    foreach (var match in lists)
    {
        Console.Write(match.nickname
            .Where(x => lists[nr].match_id == match.match_id)
            .Select(z => match.nickname)
            .FirstOrDefault());
    }

    nr++;
}

lists是一个对象数组。输出:  http://extradelar.se/printscrn.jpg

下面的所有空值都是下一个记录,然后是更多的空值等等。为什么?

2 个答案:

答案 0 :(得分:0)

您在同一个数组中循环两次。我想你想做的事:

for(int i = 0; i < lists.length; i++){
    Console.Write(item.nickname
        .Where(x=> lists[i].match_id === item.match_id)
        .Select( z=> item.nickname)
        .FirstOrDefault());
}

快看后我的2美分..

答案 1 :(得分:0)

要输出null,如果值为Console.Write,则无需致电null

尝试这样的事情:

int nr = 0;
foreach (var item in lists.Select(x => x.match_id))
{
    foreach (var match in lists)
    {
        var n = match.nickname
            .Where(x => lists[nr].match_id == match.match_id)
            .Select(z => match.nickname)
            .FirstOrDefault();

        if (n != null)
        {
            Console.Write(n);
        }
    }

    nr++;
}