C#循环访问集合并将每个对象分配给变量

时间:2011-04-26 15:29:32

标签: list variables collections c#-4.0

我确信这很简单,但我似乎无法做到这一点。 我建立了一个用户ICollection。这个集合可以有1个或多个。 我现在想循环遍历这个集合并为每个用户分配一个变量,然后我可以使用它来填写电子表格。

目前我有这段代码:

    string username = null;

        foreach (var user in dailyReport)
        {
             username = user.UserName;
        }

        Cell cell= worksheet.Cells["B5"];
        cell.PutValue(username);

现在显然这只是将集合的最后一个用户放入单元格B5! 我如何收集所有user.UserNames,以便我可以将它们放在B5,B6,B7等等????

3 个答案:

答案 0 :(得分:1)

获取用户名列表:

List<string> userNames = dailyReport.Select( x=> x.UserName).ToList();

或者你可以直接在循环中完成赋值:

    int index = 5;
    foreach (var user in dailyReport)
    {
         Cell cell= worksheet.Cells["B"+ index.ToString()];
         cell.PutValue(user.UserName);
         index++;
    }

答案 1 :(得分:0)

您需要将值放在 foreach循环中。您要求的具体事项 - 为集合中的每个值获取不同的变量 - 是不可能的,并且不是您想要的。

string column = "B"; // or whatever your column is
int row = 1; // or whatever your starting value is

foreach (var user in dailyReport)
{
    string username = user.UserName;
    string cellAddress = String.Format("{0}{1}", column, row);
    Cell cell = worksheet.Cells[cellAddress];

    cell.PutValue(username);

    row++; // make sure to increment the row, or every username goes in the same cell
}

答案 2 :(得分:0)

int i = 5;
foreach (var user in dailyReport)
{
    worksheet.Cells["B" + (i++).ToString()].PutValue(user.UserName);
}